资源描述:
《visual c++类和对象专题讲解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章类和对象要求掌握:C++怎样构造类和使用类构造函数和析构函数对象的指针本章主要内容类的定义成员函数的定义对象的定义构造函数与析构函数C++的封装性实例分析§3.1类和对象的基本概念3.1.1C++类的构成类是一种将数据和操作合并为单一结构的类型定义。用方程式表示:类=数据+操作(函数)C++类的构成包括类的声明、类的定义两个部分。一、类的声明类的声明包括:类的成员声明和类成员的访问控制声明。形式:class类名{private:私有数据和函数只能由public中的函数使用protected:保护
2、数据和函数保护成员被该类和它的派生类访问public:公共数据和函数可供用户使用};类定义的结束标志“;”容易被漏掉如:关键字class用以声明一个类class后面的CTime是用户自定义类名classCTime{private:inthour;intminute;intsecond;数据成员public:voidSetTime(inth,intm,ints);intGetHour(){returnhour;}成员函数intGetMinute(){returnminute;}intGetSecond(){returns
3、econd;}};类是由数据和函数构成,它们称为类的成员。公有成员在关键字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。classA{intx;public:inty;voidSetXY(int,int);};voidA::SetXY(inta,intb){x=a;y=b;}voidmain(){Aas;as.SetXY(5,5);//Okas.y=5;//Ok}私有成员在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。如果紧跟在类名称的后面声
4、明私有成员,则关键字private可以省略。classA{intx;public:inty;voidSetXY(int,int);};voidA::SetXY(inta,intb){x=a;y=b;}voidmain(){Aas;as.SetXY(5,5);//Okas.x=5;//Error}Note:1.类名后面的{}表示类的声明范围,最后的分号表示类声明的结束。2.建议把所有的私有成员和公有成员归类放在一起,并将私有成员放在公有成员的前面。3.数据成员可以是任意数据类型,但不能用auto、register或ext
5、ern进行说明。例:classabcd{autoa;//非法registerb;//非法externc;//非法intd;public:intget(d);};4.不能在类的声明中给类的数据成员赋初值;在类对象定义之后才能给数据成员赋初值。例:classabc{chara=’q’;//非法intb=33;//非法public:intget(b);};二、成员函数的定义(类的定义)C++提供两种方式定义成员函数,类中的成员函数的定义既可放在类中,也可放在类的外面。第一种方式:在类的声明中,只给出成员函数的原型(用现代风格
6、说明);而成员函数的定义放在类体的外部,称为外联函数。成员函数的定义放在外面,需在函数名前面加上类名和作用域区分符“::”。成员函数体在类的外部定义。其形式为:返回类型类名::函数名(参数表){//函数体类名加在成员函数名之前,而不是}加在函数的返回类型前classCTime{private:CTime::hourinthour;intminute;intsecond;public:voidSetTime(inth,intm,ints);intGetHour(){returnhour;}intGetMinute(){r
7、eturnminute;}intGetSecond(){returnsecond;}};CTime::GetSecond()inthour=0;//全局变量intminute=0;intsecond=0;voidSetTime(inth,intm,ints){::hour=h;::不跟类名时,表示全局数据或全局::minute=m;函数(即非成员函数)::second=s;}//全局函数voidmain(){CTimet;::SetTime(5,5,5);//调用全局函数t.SetTime(::hour,::minut
8、e,::second);//调用类的成员函数}例:声明并定义坐标点类classpoint{intx,y;public:voidsetpoint(int,int);intgetx();intgety();};voidpoint::setpoint(inta,intb){x=a;y=b;}在类定义的外部定义成员函数,必须在该函数前面使