- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章静态成员与友元
第8章 静态成员与友元 内容提要 本章介绍面向对象程序设计中的静态成员和友元的基本概念。 重点介绍静态数据成员和静态成员函数的概念和用法 介绍友元的必要性以及如何使用友元函数和友元类 介绍友元引入对类封装性的影响。 静态成员 类相当于一个数据类型,当说明一个某类的对象时,系统就为该对象分配一块内存单元来存放类中的所有成员。 但在某些应用中,需要程序中属于某个类的所有对象共享某个数据。为此,解决办法就是将所要共享的数据说明为全局变量,但这将破坏数据的封装性; 较好的解决办法是将所要共享的数据说明为类的静态成员。静态成员是指声明为static的类成员在类的范围内所有对象共享某个数据。 静态数据成员 静态数据成员不从属于任何一个具体对象,所以必须对它初始化,且对它的初始化不能在构造函数中进行,类中用关键字static修饰的数据成员叫做静态数据成员。 静态数据成员的初始化与一般数据成员不同,静态数据成员初始化的格式为:“类型 类名::静态数据成员=值;”,在引用静态数据成员时采用格式:“类名::静态数据成员”。 使用静态数据成员 案例名称:使用静态数据成员 程序名称:proj8_01.cpp ? #include iostream.h class static_myclass // 有静态数据成员的 class { public: static int a; }; int static_myclass::a = 5; void main() { static_myclass obj1, obj2; obj1.a = 10; //引用方法一 static_myclass::a = 20; //引用方法二 cout obj1.a endl; cout obj2.a endl; cout static_myclass.a endl; } 查看静态成员的存储地址 案例名称:查看静态成员的存储地址 程序名称:proj8_02.cpp ? #include iostream.h class nostatic_myclass // 非静态数据成员的class { public: int a; int b; }; class static_myclass // 有静态数据成员的 class { public: static int a; int b; }; int static_myclass::a; // 没有给定初值时,则a=0 void main() { nostatic_myclass obj1,obj2; obj1.a=1; obj2.a=3; obj1.b=2; obj2.b=4; coutobj1.a的值是obj1.a,obj1.a的地址是(void *) obj1.aendl; coutobj1.b的值是obj1.b,obj1.b的地址是(void *) obj1.bendl; coutobj2.a的值是obj2.a,obj2.a的地址是(void *) obj2.aendl; coutobj2.b的值是obj2.b,obj2.b的地址是(void *) obj2.bendl; static_myclass obj3,obj4; obj3.a=1; obj4.a=3; obj3.b=2; obj4.b=4; /* static int a是独立的实例,可让每个对象共同使用 */ coutendl; coutobj3.a的值是obj3.a,obj3.a的地址是(void *) obj3.aendl; coutobj3.b的值是obj3.b,obj3.b的地址是(void *) obj3.bendl; coutobj4.a的值是obj4.a,obj4.a的地址是(void *) obj4.aendl; coutobj4.b的值是obj4.b,obj4.b的地址是(void *) obj4.bendl; } 静态成员函数 静态成员函数的定义和其他成员函数一样。静态成员函数与静态数据成员类似,从属于类,在一般函数定义前加上static关键字。调用静态成员函数的格式为“类名::静态成员函数名(参数表);”。 静态成员函数只能访问静态数据成员、静态成员函数和类以外的函数和数据,不能访问类中的非静态数据成员,因为非静态数据成员只有对象存在时才有意义。但静态数据成员和静态成员函数可由任意访问权限许可的函数访问。 使用静态成员函数 案例名称:使用静态成员函数 程序名称:proj8_03.cpp ? #include iostream.h class
您可能关注的文档
最近下载
- 2025贵州黔西南州贞丰县总工会招聘社会工作者5人笔试备考题库及答案解析.docx VIP
- 【2017年整理】厦门港游艇安全管理研究.pdf VIP
- 办公楼保洁服务投标方案(技术方案).docx
- 试论港口工程施工中钻孔灌注桩的施工质量控制措施.doc VIP
- 2024执业药师继续教育临床常用三唑类抗真菌药物及TDM研究参考答案.docx VIP
- 《胎膜早破的指南》课件.pptx VIP
- (2025秋新版)部编版二年级语文上册《第五单元》PPT课件.pptx
- 八年级数学全等三角形单元测试卷.doc VIP
- 2025年福建省南平市笔试辅警协警预测试题(附答案).docx
- 国家基本药物临床应用指南.pdf VIP
文档评论(0)