05构造函数析构函数等讲述.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4.7.1 静态数据 静态数据成员定义与使用: 在类定义中,用关键字static修饰的数据成员为静态数据成员。 该类所有对象共享由系统为静态成员分配的一个存储空间,而这个存储空间是在编译时分配的,在定义对象时不再为静态成员分配空间。 静态数据是该类所有对象所共有的,可提供同一类的所有对象之间信息交换的捷径。 静态数据成员属于整个类,使用时可用以下格式: 类名::静态数据成员名 4.7.1 静态数据 【例4.9】用静态数据成员计算由同一类建立的对象的数量 执行程序后输出: 对象数量=1 //a[0]构造函数产生 对象数量=2 //a[1]构造函数产生 对象数量=3 //a[2]构造函数产生 对象数量=2 //a[2]析构函数产生 对象数量=1 //a[1]析构函数产生 对象数量=0 //a[0]析构函数产生 【例4.9】静态数据成员 #include iostream.h class Ctest{ private: static int count;//注意私有 public: Ctest(){++count;cout对象数量=count\n;} ~Ctest(){ --count;cout对象数量=count\n; } }; int Ctest::count=0; //A行 对静态数据定义性说明 int main(void){Ctest a[3];return 0;} A行是对静态数据成员数据作定义性说明,必须在文件作用域中作一次并只能做一次说明,只有在这时C++编译器为静态数据成员分配存储空间。 4.7.2 静态函数成员(选读) 静态函数成员的使用: 函数成员说明为静态,将与该类的不同对象无关。静态函数成员的调用,在对象之外可以采用下面的方式: 类名::函数名(对象名,参数表); 任一类对象名.函数名(对象名,参数表); 静态函数成员多为公有的。在例4.8中的复数类中的函数成员print(), 改为静态的则可如下表达: static void print(complex ob){ cout”Real=”ob.Real’\t’ ”Image=”ob.Image’\n’ ;} 参数是为了告诉C++系统应取哪一个对象的数据。 4.9 名字空间域和类域 (选读) 在C++中支持三种域:局部域、名字空间域和类域。 名字空间域声明: 名字空间域相当于一个更加灵活的文件域(全局域),可以用花括号把文件的一部分括起来,并以关键字namespace开头给它起一个名字: namespace ns1{ float a,b,c; fun1(){……} … } 花括号括起来的部分称声明块。声明块中可以包括:类、变量(带有初始化)、函数(带有定义)等。 4.9 名字空间域和类域 (选读) 名字空间域访问: 在域外使用域内的成员时,需加上名字空间名作为前缀,后面加上域操作符“::” 。这里添加了名字空间名称的成员名被称为限定修饰名(qualified name)。如:ns1::a, ns1::fun1()等等。 4.9 名字空间域和类域 (选读) 名字空间域嵌套: 名字空间域可分层嵌套,同样有分层屏蔽作用。例如: namespace cplusplus_primer{ namespace Matrixlib{ //名字空间嵌套 class matrix{……} //名字空间类成员matrix …... } } 访问matrix,可写限定修饰名:cplusplus_primer::Matrixlib::matrix 最外层的名字空间域称为全局名字空间域(global namespace scope),即文件域。 4.9 名字空间域和类域 (选读) using声明: 使用using声明可只写一次限定修饰名。using声明以关键字using开头,后面是被限定修饰的(qualified)名字空间成员名: using cplusplus_primer::Matrixlib::matrix; //名字空间类成员matrix的using声明 以后在程序中使用matrix时,就可以直接使用成员名,而不必使用限定修饰名。 4.9 名字空间域和类域 (选读) using指示符: 使用using指示符可以一次性地使名字空间中所有成员都可以直接被使用,比using声明方便。using指示符以关键字using开头,后面是关键字namespace,然后是名字空间名。 标准C++库

文档评论(0)

花仙子 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档