- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++语言程序设计(清华大学出版社) 南阳理工学院 C++语言程序设计 Const和static C++语言程序设计 1 const通用含义 1. 限定符声明变量只能被读 2 必须初始化 3 便于进行类型检查 4 分清数值常量和指针常量 2 const成员 const 修饰类的数据成员 const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。const数据成员的初始化必须在类的构造函数的初始化表中进行。 3 const和函数 另外const 的一些强大的功能在于它在函数声明中的应用。在一个函数声明中,const 可以修饰函数的返回值,或某个参数;对于成员函数,还可以修饰是整个函数。有如下几种情况,以下会逐渐的说明用法: A operator=(const A a); void fun0(const A* a ); void fun1( ) const; // fun1( ) 为类成员函数 const A fun2( ); 1) 修饰参数的const 调用函数的时候,用相应的变量初始化const常量,则在函数体中,按照const所修饰的部分进行常量化,保护了原对象的属性或内容. [注意1]:参数const通常用于参数为指针或引用的情况,且只能修饰输入参数;若输入参数采用“值传递”方式,由于函数将自动产生临时变量用于复制该参数,该参数本就不需要保护,所以不用const修饰。[注意2]:对于非内部数据类型的输入参数,因该将“值传递”的方式改为“const引用传递”,目的是为了提高效率。对于内部数据类型的输入参数,不要将“值传递”的方式改为“const引用传递”。否则既达不到提高效率的目的,又降低了函数的可理解性。 2) 修饰返回值 声明了返回值后,const按照修饰原则进行修饰,起到相应的保护作用。 1. 一般情况下,函数的返回值为某个对象时,如果将其声明为const时,多用于操作符的重载。 2. 如果给采用“指针传递”方式的函数返回值加const修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针。 3. 函数返回值采用“引用传递”的场合不多,这种方式一般只出现在类的赙值函数中,目的是为了实现链式表达。 3 )类成员函数中const的使用 任何不会修改数据成员的函数都因该声明为const类型。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其他非const成员函数,编译器将报错,这大大提高了程序的健壮性。 4使用const的一些建议 1 要大胆的使用const,这将给你带来无尽的益处,但前提是你必须搞清楚原委;??2 要避免最一般的赋值操作错误,如将const变量赋值,具体可见思考题;??3 在参数中使用const应该使用引用或指针,而不是一般的对象实例,原因同上;??4 const在成员函数中的三种用法(参数、返回值、函数)要很好的使用;??5 不要轻易的将函数的返回值类型定为const;??6 除了重载操作符外一般不要将返回值类型定为对某个对象的const引用;?? 5 Static通用含义 1 隐藏全局变量和全局函数 2 持久化存储 3 默认初始化为0 6 C++ 中的static数据成员 ?? 在类内数据成员的声明前加上关键字static,该数据成员就是类内的静态数据成员。 (1) 对于非static数据成员,每个类对象都有自己的拷贝。而static数据成员被当作是类的成员。无论这个类的对象被定义了多少个,静态数据成员在程序中也只有一份拷贝?,由该类型的所有对象共享访问。也就是说,静态数据成员是该类的所有对象所共有的。对该类的多个对象来说,静态数据成员只分配一次内存,供所有对象共用。 (2)静态数据成员存储在全局数据区。静态数据成员定义时才分配空间,所以不能在类声明中赋值。静态数据成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式为: <数据类型><类名>::<静态数据成员名>=<值>? (3) 静态数据成员和普通数据成员一样遵从public,protected,private访问规则? (4) 因为静态数据成员在全局数据区分配内存,属于本类的所有对象共享,所以,它不属于特定的类对象,在没有产生类对象时其作用域就可见,即在没有产生类的实例时,我们就可以操作它;(5) 类的静态数据成员有两种访问形式:<类对象名>.<静态数据成员名> <类类型名>::<静态数据成员名> (6) 静态数据成员主要用在各个对象都有相同的某项属性的时候。比
您可能关注的文档
- 关系数据库base.ppt
- 关系数据库标准语言.ppt
- CABLE 光纤 POF简介.ppt
- CAS22 金融工具确认与计量定稿.ppt
- 关键句子含义理解题.ppt
- ch 希腊字母.ppt
- CDN方案(北研)1.ppt
- ch05五笔字型编码规则.ppt
- 冀教版七年级历史下册第一单元1-3课复习课件.ppt
- 内地歌手陈俊澎的成长历程.ppt
- 2024至2030年中国人造棉面料行业投资前景及策略咨询报告.docx
- 重庆市渝中区遴选公务员2024年国家公务员考试考试大纲历年真题10340笔试历年典型考题及解题思路附.docx
- 2024至2030年中国甲基苯乙酮行业深度调研及发展预测报告.docx
- 2024至2030年中国羚羊角类饮片行业深度调查与前景预测分析报告.docx
- 重庆市面向中国农业大学定向选调2024届大学毕业生2024年国家公务员考试考试大纲历年真题14笔试历.docx
- 重庆市面向西北工业大学定向选调2024届大学毕业生00笔试历年典型考题及解题思路附答案详解.docx
- 中国不动杆菌感染治疗药行业市场现状分析及竞争格局与投资发展研究报告2024-2029版.docx
- 2024至2030年全球与中国ETL软件市场现状及未来发展趋势.docx
- 初中八年级(初二)生物下册期末考试1含答案解析.docx
- 干簧式继电器项目申请报告.docx
文档评论(0)