第3讲 类和对象(下).ppt

第3讲 类和对象(下).ppt

ID:48089832

大小:1.29 MB

页数:38页

时间:2020-01-14

第3讲 类和对象(下).ppt_第1页
第3讲 类和对象(下).ppt_第2页
第3讲 类和对象(下).ppt_第3页
第3讲 类和对象(下).ppt_第4页
第3讲 类和对象(下).ppt_第5页
资源描述:

《第3讲 类和对象(下).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第3讲类和对象(下)对象数组对象指针共用数据的保护对象的动态建立和释放对象的赋值和复制静态成员友元类模板参考教材第9章的内容对象数组:一组同类对象集合,例如Studentstud[50];为什么需要对象数据?对象数组的初始化?同样使用构造函数来初始化。每个元素都需要调用构造函数。也在定义数组时提供实参以实现初始化一般格式:在花括号中分别写出构造函数并指定实参。类名对象名[长度]={构造函数(实参列表1),构造函数(实参列表2),…}例如StudentStud[2]={Student(1001,18

2、,87),Student(1002,19,76)}//分别2次调用构造函数,为两个对象提供3个实参来初始化3.1对象数组对象数组的定义和初始化例.对象数组的使用方法3.2对象指针对象相关指针类型指向对象指针指向对象数据成员指针指向对象函数指针this指针对象函数指针对象指针对象数据成员指针构建对象时,系统会为对象分配一定的存储空间,以存放其成员。对象空间的起始地址即:对象的指针可定义同类型的指针变量,用来存放某对象的指针3.2对象指针指向对象的指针及其指针变量指向对象中某个数据成员的地址定义方法和

3、指向普通变量的指针变量方法相同。例:int*p1;如果类的数据成员为公用,则可在类外通过对象成员的指针变量访问。例:p1=&t1.hour;cout<<*p1<

4、类名::成员函数名;如果对同一个类定义了n个对象,则有n组同样大小的空间来存放n个对象的数据成员。但所有对象成员函数只有一个存储副本当不同对象的成员函数引用数据成员时,怎么能保证引用的是所指定的对象的数据成员呢?例:Box类定义了3个对象a,b,c。如果有a.volume(),应该是引用对象a中的height,width和length,计算a的体积。如果有b.volume(),应该是引用对象b中的height,width和length,计算b的体积。而现在都用同一个函数段,系统怎样使它分别引用a或

5、b中的数据成员呢?3.2对象指针this指针每个成员函数都包含一个特殊的指针,即this。其值是当前被调用的成员函数所在的对象的起始地址例如,当调用成员函数a.volume时,系统就把对象a的起始地址赋给this指针,于是成员函数引用数据成员时,就按照this指向找到对象a的数据成员,计算height*width*length实际上是执行:(this->height)*(this->width)*(this->length),即相当于执行:(a.height)*(a.width)*(a.lengt

6、h)3.2对象指针this指针深入解剖:所谓“调用对象a的成员函数f”,本质上是在调用成员函数f时,使this指针来访问对象a的成员常变量:在程序运行中不能改变的变量,constinta=3;常对象:在所有的场合中,常对象中的所有成员的值都不能被修改,只能初始化例:Timeconstt1(12,34,46);常对象定义的一般形式为:类名const对象名[(实参表列)];或者const类名对象名[(实参表列)];注意2:如果一个对象被声明为常对象,则不能调用该对象的非const型的成员函数(除了由系

7、统自动调用的隐式的构造函数和析构函数)3.3共用数据的保护1.常对象特别注意:如果“引用常对象中的数据成员”,需将该成员函数声明为const;因为只能调用常对象中的const成员函数,而不能调用其中的非const成员函数2.常成员函数如果将成员函数声明为常成员函数,则只能引用本类中的数据成员,不能修改它们,例:voidget_time()const;注意:在声明函数和定义函数时都要有const关键字,在调用时不必加const常成员函数可以引用const数据成员,也可引用非const数据成员注意:(

8、1)如果要求所有的数据成员的值都不允许改变,则可以将对象声明为常对象,然后用const成员函数引用数据成员。或将所有的数据成员声明为const(2)如果在一个类中,有些数据成员的值允许改变,另一些数据成员的值不允许改变。则可以将不允许改变数据成员声明为const,以保证其值不被改变3.3共用数据的保护3.常数据成员和一般常变量相似,用关键字const来声明常数据成员。常数据成员的值是不能改变的注意:只能通过构造函数的参数初始化表对常数据成员进行初始化;不能采用在构造函数中对常数据成

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。