- 1、本文档共64页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 关于类和对象的进一步说明 C++ 程序的设计.ppt
9.6 共用数据的保护 9.6.1 常对象 在定义对象时指定对象为常对象。常对象必须要有初值,如:Time const t1(12,34,46); 这样,对象t1中的所有数据成员的值都不能被修改。 定义常对象的一般形式为 类名 const 对象名[(实参表列)]; const 类名 对象名[(实参表列)]; 9.6.2 常对象成员 可以将对象的成员声明为const,包括常数据成员和常成员函数。 常数据成员: 用关键字const来声明常数据成员。常数据成员的值是不能改变的。只能通过构造函数的参数初始化表对常数据成员进行初始化。 常对象的数据成员都是常数据成员,因此常对象的构造函数只能用参数初始化表对常数据成员进行初始化。 const int hour; //声明hour为常数据成员 Time∷Time(int h):hour(h){} 常成员函数 将成员函数声明为常成员函数: void get_time( ) const; //注意const的位置在函数名和括号之后 const是函数类型的一部分,在声明函数和定义函数时都要有该关键字,在调用时不必加const。 常成员函数可以引用const数据成员,也可以引用非const的数据成员。但是都不能修改它们。 const数据成员可以被const成员函数引用,也可以被非const的成员函数引用。 常对象中的成员函数不一定都是常成员函数。常对象只保证其数据成员是常数据成员。 怎样利用常成员函数呢? (1) 如果在一个类中,有些数据成员的值允许改变,另一些数据成员的值不允许改变,则可以将一部分数据成员声明为const,以保证其值不被改变,可以用非const的成员函数引用这些数据成员的值,并修改非const数据成员的值。 (2) 如果要求所有的数据成员的值都不允许改变,则可以将所有的数据成员声明为const,或将对象声明为const(常对象),然后用const成员函数引用数据成员,这样起到“双保险”的作用,切实保证了数据成员不被修改。 (3) 如果已定义了一个常对象,则只能调用其中的const成员函数,而不能调用非const成员函数(不论这些函数是否会修改对象中的数据)。这是为了保证数据的安全。 (4)当希望在调用函数时对象的值不被修改,就应当把形参定义为指向常对象的指针变量,同时用对象的地址作实参(对象可以是const或非const型)。如果要求该对象不仅在调用函数过程中不被改变,而且要求它在程序执行过程中都不改变,则应把它定义为const型。 9.6.3 指向对象的常指针 将指针变量声明为const型,这样指针值始终保持为其初值,不能改变。如 注意: 指向对象的常指针变量的值不能改变,但可以改变其所指向对象(如t1)的值。 定义指向对象的常指针的一般形式为 类名 * const 指针变量名; Time t1(10,12,15),t2; //定义对象 Time * const ptr1; //const位置在指针变量名前面,规定ptr1的值是常值 ptr1=t1; //ptr1指向对象t1,此后不能再改变指向 ptr1=t2; //错误,ptr1不能改变指向 9.6.4 指向常对象的指针变量 定义指向常对象的指针变量的一般形式为 const 类型名 *指针变量名; 例:const Time *ptr; 说明ptr指向的Time类对象是常对象,不能通过ptr来改变其值。 注意: (1)如果一个对象已被声明为常对象,只能用指向常对象的指 针变量指向它,而不能用一般的(指向非const型对象的)指针变量 去指向它。 (2)如果定义了一个指向常对象的指针变量,并使它指向一个非 const的对象,则其指向的对象是不能通过指针来改变的。 (3)如果定义了一个指向常对象的指针变量,是不能通过它改变 所指向的对象的值的,但是指针变量本身的值是可以改变的。 9.6.5 对象的常引用 例9.8 对象的常引用。 #include iostream using namespace std; class Time {public: Time(int,int,int); int hour; int minute; int sec; }; Time∷Time(int h,int m,int s) {hour=h;minute=m;sec=s;} void fun(Time t) //形参t是Time类对象的引用 {t.hour=18;} int main( ) {Time t1(10,13,56); fun(t1); coutt1.hourendl; return
您可能关注的文档
- 第7章机器人的应用 机器人技术知识》课件.ppt
- 第7章机械加工表面质量的影响因素及控制 机械制造技术知识基础课件.ppt
- 第7章消费信贷 2013商业银行业务和 与经营.ppt
- 第7章由暴雨资料推求的设计洪水 水文课件.ppt
- 第7章由暴雨资料推求的设计洪水改 水文课件.ppt
- 第7章磁路与变压器 《电工电子技术知识(上、下册)》课件.ppt
- 第7章网络化测控系统实例 《测控系统网络化技术知识及应用(第2版)》课件.ppt
- 第7章计算机控制系统的软件的设计 计算机控制系统2版电子课件.ppt
- 第7章食品质量控制的HACCP系统 食品质量安全相关管理和监督 .ppt
- 第7章-导行电磁波-II 电磁场和 与电磁波课件.ppt
最近下载
- (新人教PEP版)英语五年级下册 Unit 5 大单元教学设计.docx
- 《红星照耀中国》阅读任务单(学生版).docx VIP
- 电子数据取证分析师考核标准.pdf VIP
- 新闻采访与写作 马工程 第四章.ppt VIP
- 动物诊疗管理制度十项制度宠物医院管理制度.pdf VIP
- 乡镇国土空间规划资料收集清单(发给县里)(2)(1).doc VIP
- 技能鉴定-起重装卸机械操作工(叉车司机)初级真题库_4.docx VIP
- 2024年6月英语四级真题(全3套)及答案解析.pdf VIP
- 高年级学生读本第11讲国家安全就是头等大事《2.维护国家安全人人都是主角》教学设计.pdf VIP
- 典型压力容器损伤模式识别【98页】.pptx VIP
文档评论(0)