- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
四、静态成员 五、指向成员的指针 四、静态成员 extern在不同的模块中沟通全局变量的外部连接, static则充当内部屏蔽作用。 C++语言中静态成员属于类内部的合法成员但凌驾于对 象之上。模块之间静态成员具有extern的外部连接属性。 a. 静态数据成员 static变量具有特别惹人垂青的性能: 1). 生命与程序等长的持久性。 2). 维持其原先位置的隐蔽性,禁止外部直接访问。 静态全局变量是内部连接的,但静态成员变量具有外部 连接属性。 [例] 静态成员变量的声明、定义和使用 #include stdio.h static long* pa; class CType { public: static int data; CType (int n=1) { m_n=n; data++; } static void f() { pa=sa; } protected: static long sa[ ]; private: int m_n; }; 静态成员声明static long sa[ ]; 相当于原先的外部全局 变量连接说明extern long sa[ ]; 静态成员变量的定义和初始化设置: 1. 定义和初始化不管是公共的还是私有的一律采用相 同的格式。 2. 定义时不再加static关键字但类域分辨符则是静态成 员变量定义的整体部分。 3. 定义是唯一的且在文件范围内进行,定义时可以不赋 初始值,如同定义全局变量。 4. 最好在.cpp部分同时指定初始值,特别定义私有的静 态成员变量时。放在头文件的全局范围定义静态成员变量容 易导致定义的重复,因此避免这样做是上策。 5. 不完备的声明语句如[static long sa[];]在定义点需补 充足够的信息。 6. 在构造函数中对静态成员变量赋值不牵涉静态成员变 量的内存分配, 高度警惕对静态成员变量data=const合法的 简单赋值,这导致对象构造一次静态成员变量又回归原值。 下面是静态成员变量在文件范围定义的格式: 数据类型 类名::静态成员变量名; [例] int CType::data; long CType::sa [ ]={20,30,40}; void main () { CType::data=0; printf (%d,static data=%d\t, sizeof (CType),CType::data); CType::f (); printf (pa[0]=%d,pa[1]=%d, pa[2]=%d\n,pa[0],pa[1],pa[2]); } //输出:4,static data=0 pa[0]=20,pa[1]=30,pa[2]=40 上面例题中并无具体对象,静态成员变量明显地独立于 对象而存在。可以当作全局变量一样在类外通过全限定名操 作公共的静态成员如CType::data,也可以通过该类的实例以 对象名obj.data方式进行处理。 对象名obj.data方式的访问与对象本身的具体属性毫不 相干。根据内存数据状态唯一性原则系统最终将其归约为 CType::data的形式。 私有的保护的静态成员变量由成员函数和友元访问。 静态成员变量可以用于监控一组成员函数,纪录它们被 调用的次数,根据调用次数进行适当的恢复或前进操作。 静态成员变量实质上是平移到类中再加上访问控制规则 制约的全局变量。 b. 静态成员函数 静态成员函数没有隐含的this指针,因而不操作类中的 非静态成员,因而不能是虚函数。只读成员函数本质上是限 定this指针为只读指针。 静态成员函数不含当前类的this指 针因而不能是只读成员函数。 静态成员函数操作的是静态成员变量、类中的梅举常数 和全局变量以及自身入口中的局部变量。 非静态的成员函数可以直接操作静态成员函数或全局函 数,静态成员函
您可能关注的文档
最近下载
- tsgz8001《特种设备无损检测人员考核规则》.pdf VIP
- (高清版)B-T 37977.51-2023 静电学 第5-1部分:电子器件的静电防护 通用要求.pdf VIP
- API 571-2020影响炼油工业固定设备的损坏机理-中文版.pdf
- 基孔肯雅热疫情防控预案详解.doc
- 医院医疗专项工程全过程管控要点.pdf VIP
- 大学语文(第三版)课件 《大国工匠 百炼成“器”》课件.pptx
- 《康复护理学》(第2版)第1章康复护理学概论.pptx VIP
- 常乐堡煤矿矿山地质环境保护与土地复垦方案.pdf VIP
- 能源工程概论吴金星1能源资源概述.ppt VIP
- 广东省汕头市澄海区2023-2024学年六年级下学期期末考试英语试卷.doc VIP
文档评论(0)