- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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++库
您可能关注的文档
最近下载
- 【保洁】质量保证措施(完整版).docx VIP
- 关于入团培训考试100题题库(含答案).docx VIP
- 金融行测题库及答案.pdf VIP
- 社区成人血脂管理中国专家共识(2024年)解读 (3)PPT课件.pptx VIP
- TCAS-汽车行业生产组织质量管理体系成熟度评价准则.pdf VIP
- 曲靖市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)有答案详解.docx VIP
- 2024-2025学年初中地理八年级上册(人教版)教学课件 第二章 第三节 河流 (第3课时).pptx
- 《日本文化——菊与刀》-课件.ppt VIP
- 医用电子内窥镜生产质量管理体系.docx
- 金融专业行测题库及答案.doc VIP
原创力文档


文档评论(0)