欢迎来到天天文库
浏览记录
ID:39337258
大小:347.50 KB
页数:25页
时间:2019-07-01
《学时类与对象-类的实例化》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三讲类的实例化对象定义成员引用对象的操作代码分离1类的实例化-对象类的实例化即定义类的对象,类似于定义任何类型的变量(类名称为一个新的类型说明符)定义对象有三种形式(1)先声明类类型,后定义对象classTdated1,d2;//把class和Tdate合起来作为一个类名Tdated1,d2;//直接用类名定义对象。2(2)在声明类类型的同时定义对象classTdate{public:voidSet(intm,intd,inty){…}intIsLeapYear(){…}voidPrint(){…}private:intmonth;intday;intyea
2、r;}d1,d2;定义对象有三种形式3(3)不出现类名,直接定义对象编译系统会为这个对象分配存储空间,以存放对象中的成员。class//无类名{private://声明以下部分为私有的┆public://声明以下部分为公用的┆}d1,d2;//定义了两个无类名的类对象定义对象有三种形式4类说明的一般形式为:class类名{public:公有段数据成员和成员函数;protected:保护段数据成员和成员函数;private:私有数据成员和成员函数;};注意:允许已定义类名出现在类的说明中例:classX{……};classY{XdataMember;……};//
3、声明一个类类型数据成员对象5注意:允许已定义类名出现在类的说明中例:classX{XdataMember;……};//错误错误无穷递归结构对象62.对象成员的引用一般对象的成员表示如下:数据成员对象名.成员名或对象指针名->成员名成员函数对象名.成员名(参数表)或对象指针名->成员名(参数表)“.”运算符的功能是表示对象的成员。对象7成员函数vs.一般函数都有函数体,返回值和函数类型。成员函数属于一个类的成员,出现在类体中成员访问说明符限制private、public注意调用它的权限以及它的作用域成员函数必须由对象句柄调用和数据成员封装成一体对象82访问对象中
4、的成员可以有3种方法:通过对象名和成员运算符访问对象中的成员;通过指向对象的指针访问对象中的成员;通过对象的引用变量访问对象中的成员。classA{private://private说明符在首次出现时可以省略intm_a;public://切换到public说明符,以下就是公有成员intm_b;voidprint(){cout<5、t1;//定义对象t1Time&t2=t1;//定义Time类引用变量t2,并使之初始化为t1cout<hour;//p->hour,(*p).hour和t.hour对象10成员的存储方式用类去定义对象时,系统会为每一个对象分配存储空间。如果一个类包括了数据和函数,要分别为数据和函数的代码分配存储空间。cout<6、间可以相互赋值。LocationlocationA,locationB;locationA.set(5,6);locationB=locationA;(2)对象可以作为数组的元素。Locationarrayloc[100];(3)可以说明指向对象的指针,但不能取私有数据成员的指针或成员函数的地址。Locationlocation;Location*pointLoc=&location;当pointLoc被加1后,它将指向下一个Location对象。对象操作12(4)对象可以作为函数的参数,既可作值参也可以作引用参数。voiddisplay(Location&l7、ocation){...};(5)一个对象可以是另一个类的成员。13classTime{public:Time();voidset(int,int,int)voidprint();private:inthour;intminute;intsecond;Datedd;};classDate{public:Date(int,int,int);intget_y;voidset(int,int,int);voidprint();private:intmonth;intday;intyear;};14对象代码模拟(student.cpp)#include8、m>usingnamespacestd
5、t1;//定义对象t1Time&t2=t1;//定义Time类引用变量t2,并使之初始化为t1cout<hour;//p->hour,(*p).hour和t.hour对象10成员的存储方式用类去定义对象时,系统会为每一个对象分配存储空间。如果一个类包括了数据和函数,要分别为数据和函数的代码分配存储空间。cout<6、间可以相互赋值。LocationlocationA,locationB;locationA.set(5,6);locationB=locationA;(2)对象可以作为数组的元素。Locationarrayloc[100];(3)可以说明指向对象的指针,但不能取私有数据成员的指针或成员函数的地址。Locationlocation;Location*pointLoc=&location;当pointLoc被加1后,它将指向下一个Location对象。对象操作12(4)对象可以作为函数的参数,既可作值参也可以作引用参数。voiddisplay(Location&l7、ocation){...};(5)一个对象可以是另一个类的成员。13classTime{public:Time();voidset(int,int,int)voidprint();private:inthour;intminute;intsecond;Datedd;};classDate{public:Date(int,int,int);intget_y;voidset(int,int,int);voidprint();private:intmonth;intday;intyear;};14对象代码模拟(student.cpp)#include8、m>usingnamespacestd
6、间可以相互赋值。LocationlocationA,locationB;locationA.set(5,6);locationB=locationA;(2)对象可以作为数组的元素。Locationarrayloc[100];(3)可以说明指向对象的指针,但不能取私有数据成员的指针或成员函数的地址。Locationlocation;Location*pointLoc=&location;当pointLoc被加1后,它将指向下一个Location对象。对象操作12(4)对象可以作为函数的参数,既可作值参也可以作引用参数。voiddisplay(Location&l
7、ocation){...};(5)一个对象可以是另一个类的成员。13classTime{public:Time();voidset(int,int,int)voidprint();private:inthour;intminute;intsecond;Datedd;};classDate{public:Date(int,int,int);intget_y;voidset(int,int,int);voidprint();private:intmonth;intday;intyear;};14对象代码模拟(student.cpp)#include8、m>usingnamespacestd
8、m>usingnamespacestd
此文档下载收益归作者所有