第六章类成员(三) 马建辉.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文档。上传文档
查看更多
第六章类成员(三) 马建辉

第六章 类成员(三) 面向对象程序设计(C++) 6 类成员(三) 6.1 成员变量与成员函数 6.2 this指针 6.3 成员对象 6.4 const(常量) 6.5 const对象与const成员函数 6.6 静态成员变量与静态成员函数 6.6 类的静态成员注1与名字空间注2 static: 生命期是全局的,但作用域(可视范围) 是局部于类的。 namespace: C++为解决名字冲突引进的特征。 注1:参见§10.3相关内容 注2:参见§10.2相关内容 6.6.1 C中的静态元素 C中static的两种基本含义: 在固定的地址(静态数据区)上进行存储分配; 作用域对一个特定的编译单位来说是局部的。 6.6.2 static vs 全局变量 or 局部变量 全局变量总是在main执行之前被创建; 但是,倘若包含静态变量或局部变量的函数从未被调用,则它们不会被创建。 static、全局变量都被初始化1次;而局部变量在每次函数调用发生时被初始化; static、全局变量都可以在两次函数调用之间保留值;局部变量的值不能保留; static的可视范围仅限于函数,而全局量不是;(static仅受该函数控制);局部变量地可视范围仅限于函数。 6.6.3 连接的可见性 存储方式:static,auto,register 连接的可见性:internal linkage, external linkage 外部连接:在文件作用域内,如果一个名字对所有翻译单元(.cpp)来说是都是可见的。容易引起名字冲突 内部连接:在文件作用域内,如果一个名字对翻译单元(.cpp)来说是局部于该单元的。不易引起名字冲突 6.6.3.1 static的不同含义 对全局量来说,static控制名字的连接; 对局部量来说,static控制名字的作用范围。 全局量: (extern) int a=0; // 存储在静态区、外部连接; static int a=0; //存储在静态区、内部连接; 局部量: int a=0; // 存储在堆栈、局部作用域; static int a=0; //存储在静态区、局部作用域; extern int a; //意味着另外某处已经存在一个全局 的a; // Localextern.cpp #include iostream.h int a=0; // 静态数据区、外部连接 static b=0; // 静态数据区、 内部连接 int main() { extern int ei; couti; } // LocalExtern2.cpp int ei=5; void func1(){ static int i=0; // 静态数据区、局部变量; int j; // 堆栈数据区、局部变量; i++; …; } 6.6.4 名字空间(略) 全局名字空间:包括全局函数名、全局变量名以 及类,当项目非常大时,容易产 生冲突。 namespace: 把一个全局名字空间分成多个可 管理的小空间(名字空间),从而 减少名字冲突。 6.6.4.1 创建名字空间 namespace MyLib { // Declarations } int main() {} ///:~ 名字空间只能在全局范围内定义,但可以互相嵌套; 一个namespace可以在多个头文件中用一个标识符来定义,并不是重复定义,而是追加名字。 可以有别名。namespace bob=bobssuperduperlibrary 不能创建名字空间的实例。 //: C10:Header1.h #ifndef HEADER1_H #define HEADER1_H namespace MyLib { extern int x; void f(); // ... } #endif // HEADER1_H ///:~ //: C10:Header2.h #ifndef HEADER2_H #define HEADER2_H #include Header1.h // A

文档评论(0)

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

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

1亿VIP精品文档

相关文档