已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+语言程序设计,普通高等教育“十一五”国家级规划教材国家精品课教材,尹云飞博士硕导yinyunfei,2,第5章数据的共享与保护,作用域与可见性对象的生存期数据与函数静态成员共享数据的保护友元编译预处理命令多文件结构和工程深度探索,3,作用域,函数原型作用域:指在在函数原型声明时形式参数的作用范围局部作用域:从声明处开始到声明所在块结束的大括号位置类作用域:,标识符的作用域与可见性,类作用域有3种:如果在类的成员函数中没有声明同名的形参,则可以访问到类的局部变量通过类名.成员变量或类名:成员变量可以访问成员变量,其中类名:成员变量只用于访问静态成员通过ptr-成员变量也可以访问类的成员变量,4,作用域,命名空间作用域:在一个命名空间内有效,通常称这些变量为全局变量语法:namespace空间名.using空间名:标识符;表示在当前作用域中可以直接引用该标识符,标识符的作用域与可见性,5,作用域,Usingnamespace空间名;表示在当前作用域中可以直接引用该命名空间的任意标识符例5-1,p149,标识符的作用域与可见性,6,可见性,可见性,即可引用性。程序运行到某一点能够引用到的标识符,就是该处可见的标识符图5-1,p150,标识符的作用域与可见性,可见性规则:标识符应声明在先,引用在后。如果某个标识符在外层中声明,且在内层中没有同一标识符的声明,则该标识符在内层可见。对于两个嵌套的作用域,如果在内层作用域内声明了与外层作用域中同名的标识符,则外层作用域的标识符在内层不可见。,7,静态生存期,如果对象的生存期与程序的运行期相同,则称它具有静态生存期命名空间中的对象均具有静态生存期局部变量也可,例如staticintx=10;,对象的生存期,8,动态生存期,动态生存期是在局部作用域中声明的对象局部生存期对象诞生于声明点,结束于声明所在的块执行完毕例5-2,p151,对象的生存期,9,静态数据成员,类的静态数据成员是描述类的所有对象共同特征的一个数据项,对于任何对象实例,它的属性值是相同的采用static关键字来声明静态成员静态数据成员具有静态生存期,例5-4,类的静态成员,10,静态函数成员,静态成员函数是使用static关键字生命的函数成员静态成员函数可以直接访问该类的静态数据和函数成员。而访问非静态成员,必须通过对象名。例如p157,例5-5,p157,类的静态成员,11,友元关系,友元关系提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制在一个类中,通过friend将其他函数或类声明为友元,类的友元,12,友元类,通过friend修饰的类若A类为B类的友元类则A类的所有成员函数都是B类的友元函数,都可以访问B类的私有和保护成员例如p162,类的友元,13,友元函数,友元函数是在类中用关键字friend修饰的非成员函数友元函数可以通过对象名访问类的私有和保护成员例5-6,p160,类的友元,关于友元需要注意:友元关系是不能传递的:B是A的友元,A是C的友元不等于B是C的友元友元关系是单向的:B是A的友元,不表示A是B的友元友元关系是不能被继承的,14,常对象,常对象是指其数据成员值在对象的整个生存期间不能被改变语法:const类型说明符对象名;常对象必须进行初始化,而且不能被更新,共享数据的保护,15,用const修饰的类成员,常成员函数:用const修饰的函数语法:类型说明符函数名(参数表)const例5-7,p165,共享数据的保护,常成员函数使用注意:在函数定义部分也要带const常对象只能调用常成员函数,非常对象既可以调用常成员函数也可调用普通成员函数常成员函数在调用过程中其调用对象都被视为常对象,不管其本身原来是不是Const可以用来对重载函数的区分,即voidprint();和voidprint()const;是不同的函数,16,用const修饰的类成员,常数据成员:用const修饰的数据成员例5-8,共享数据的保护,17,常引用,常引用:用const修饰的引用语法:const类型说明符例5-9,p167,共享数据的保护,18,C+程序的一般组织结构,一个项目至少包括3个文件:类定义文件(.h)、类实现文件(.cpp)和类使用文件(.cpp)例5-10,p168C+多文件组织结构图,图5-8,p169,多文件结构和编译预处理命令,19,外部变量与外部函数,外部变量:如果一个变量除了在定义它的源文件中可以使用外,还能在其他文件中使用命名空间定义的变量都是外部变量外部变量引用通过extern加以声明,例如p170,多文件结构和编译预处理命令,20,外部变量与外部函数,外部函数:在所有类之外声明的函数,它具有命名空间的作用域将变量和函数限制在编译单元内:在你名命名空间中定义的变量和函数都不会暴露给其它编译单元:namespaceintn;voidf()n+,多文件结构和编译预处理命令,21,标准C+库,标准C+库分为6种类型:输入输出类,容器类与ADT(抽象数据类型),存储管理类,算法,错误处理,运行环境支持,多文件结构和编译预处理命令,22,编译预处理,#include指令:将文件嵌入到当前位置#define和#undef指令:预定义条件编译指令:形式一到形式五,参见p175define操作符:例如p175,多文件结构和编译预处理命令,23,常成员函数的声明原则,凡是会改变费静态成员对象值的成员函数都不能声明为常成员函数通过mutable关键字修饰的数据成员可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2020-2025年一级造价师之工程造价案例分析(土建+安装)通关提分题库及完整答案
- 2025-2026学年冀教版(新教材)一年级上册第一单元达标试卷(附参考答案)
- 跖神经损害的护理
- 2026年注册土木工程师(水利水电)之专业基础知识考试题库200道附答案(满分必刷)
- 2026浙江衢州市龙游县新教师提前批招聘12人(浙江师范大学)历年真题汇编及答案解析(夺冠)
- 2025重庆市属事业单位第四季度遴选工作人员43人备考公基题库带答案解析
- 2026年质量员之土建质量基础知识考试题库及答案(新)
- 浙江国企招聘-2025浙江浙商典当有限责任公司人员招聘2人历年真题汇编带答案解析
- 2026陕西省面向中南大学招录选调生历年真题汇编附答案解析
- 2025河北廊坊开发区招聘社区工作者40人备考题库带答案解析
- 2025昆明市消防救援支队政府专职消防员招聘(188人)笔试考试参考试题及答案解析
- 2025广东东莞市樟木头镇招聘编外聘用人员14人笔试考试参考试题及答案解析
- 2025年大学《艺术鉴赏》各章节测试题与答案
- 2025至2030中国合成纤维行业项目调研及市场前景预测评估报告
- 幼儿教师(单页)求职简历(可编辑)A4打印模版
- 2025年土地确权数字化合同协议
- 2025广东中山市公安局三角分局辅警招聘8人考试笔试模拟试题及答案解析
- 2025年淮南交通控股(集团)有限公司招聘16人考试笔试备考题库及答案解析
- 舒适护理在手术室的应用与实践
- 窗口行风建设工作自查报告
- 幼儿园安全隐患奖惩制度
评论
0/150
提交评论