- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C数据共享和成员特性
面向对象程序设计 第11章 数据共享和成员特性 主要内容 多文件结构和工程 (对象的)作用域和生存期 静态成员 共享数据的保护 友元 1.多文件结构和工程 一个源程序可以划分为多个源文件: 类声明文件(.h文件) 类实现文件(.cpp文件) 类的使用文件(main()所在的.cpp文件) 利用工程来组合各个文件 2作用域和生存期 函数原型作用域 函数原型中的参数,其作用域始于“(”,结束于“)”。 块作用域 在块中声明的标识符,其作用域自声明处起,限于块中 类作用域 文件作用域 可见性 (不同作用域的同名变量/对象) 可见性是从对标识符的引用的角度来谈的概念 可见性表示从内层作用域向外层作用域“看”时能看见什么。 如果标识在某处可见,则就可以在该处引用此标识符。 静态生存期和动态生存期 静态生存期 变量/对象的生存期与程序的运行期相同 static变量/对象,全局变量/对象 动态生存期 开始于程序执行到声明点时,结束于命名该标识符的作用域结束处。 3 类的静态成员 静态数据成员--不属于任何一个具体的对象,而是类的所有对象共享的数据成员 定义: 在类体内定义static数据成员 初始化: 必须在类体外初始化。(不能在构造函数中初始化!) 静态数据成员不属于任何一个对象,所以必须初始化! 类型 类名::静态数据成员=值; 引用 类名::静态数据成员 访问权限——同普通数据成员 私有的一样不能被外部访问 静态数据成员可以由任意访问权限许可的函数访问(如:类的成员函数)。 例:所创建的Point对象的个数 class Point { int x,y; public: Point(int x1=0,int y1=0) { x=x1; y=y1; countP++; } static int countP; …… }; int Point::countP=0; void main(){ Point p1(1,2); Point p2(3,4); coutPoint::countPendl; } 例:所创建的Point对象的个数 class Point { int x,y; static int countP; public: Point(int x1=0,int y1=0) { x=x1; y=y1; countP++; } Point(const Point p) { x=p.x; y=p.y;} int getx() { return x;} int gety() { return y;} int getcountP(){return countP;} }; int Point::countP=0; void main(){ Point p1(1,2); Point p2(3,4); coutp1.getcountP()endl; coutp2.getcountP(); } 静态成员函数 只要类存在,不用定义对象,就可以使用静态成员函数 定义 static 类型静态成员名(函数表); 调用 类名::静态成员名(函数表); [例 静态成员函数] 例:所创建的Point对象的个数——使用类静态成员函数 class Point { int x,y; static int countP; public: Point(int x1=0,int y1=0) { x=x1; y=y1; countP++; } Point(const Point p) { x=p.x; y=p.y;} int getx() { return x;} int gety() { return y;} int getcountP(){return countP;} }; int Point::countP=0; void main(){ Point p1(1,2); Point p2(3,4); coutp1.getcountP()endl; coutp2.getcountP(); } 注意:静态成员函数 静态成员函数只能访问该类的静态数据成员、静态成员函数和类以外的函数和数据,不能访问类中的非静态数据成员(因为非静态数据成员只有对象存在时才有意义)。 静态成员函数也有访问限制,private静态成员函数不能由外界访问。和一般成员函数类似, 但静态数据成员和静态成员函数可由任意访问权限许可的函数访问。 问题:如何既保证数据共享又防止改变数据? 常类型——const说明的
您可能关注的文档
最近下载
- 脑室外引流管护理.pptx VIP
- 【高一】高中心理健康《1生涯拍卖会》 省级优质课.pptx VIP
- 【廉政党课】全面从严治党-抓好党风廉政建设.pptx VIP
- 17GL401 综合管廊热力管道敷设与安装.pptx VIP
- 病原微生物第3章消毒灭菌与病原微生物实验室生物安全习题与答案.docx VIP
- 精益生产、精益工具与精益思想.ppt VIP
- 电子节温器工作原理及电子警察施工安装说明.doc VIP
- 第五讲贯通测量.pdf VIP
- xe82-2000午山风电场风机定检作业指导书一年3月15日部分内容改动.pdf VIP
- 任务一+感受物联网+课件-2025-2026学年陕教版(2024)初中信息科技八年级上册.pptx VIP
文档评论(0)