const和static.pptVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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) 静态数据成员主要用在各个对象都有相同的某项属性的时候。比

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档