c++5数据的共享与保护讲稿.ppt

  1. 1、本文档共91页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1 实验报告一 注意: word文件统一命名为:学号-姓名 2 第五章 数据的共享与保护 作用域与可见性 对象的生存期 数据与函数 静态成员 友元 共享数据的保护 编译预处理命令 多文件结构和工程 深度探索 3 函数原形的作用域 函数原型中的参数,其作用域始于 (,结束于)。 例如,设有下列原型声明: double area(double radius); 该变量的作用域仅在于此,不能用于程序正文其他地方,因而可有可无。 作用域与可见性 4 局部作用域 函数的形参,在块中声明的标识符,其作用域自声明处起,限于块中,例如: void fun(int a) { int b = a; cin b; if (b 0) { int c; ...... } } 作用域与可见性 a的作用域 5 类作用域 类作用域作用于特定的成员名。 类X的成员m具有类作用域,对m的访问方式如下: 如果在X的成员函数中没有声明同名的局部作用域标识符,那么在该函数内可以访问成员m。 通过表达式X.m或者X::m访问。 通过表达式ptr-m (ptr是指向类的一个对象的指针,第六章中将介绍指针) 作用域与可见性 6 命名空间 命名空间可以解决类名、函数名等的命名冲突 命名空间的声明 namespace 命名空间名 { 各种声明(函数声明、类声明、……) } 例 namespace SomeNs { class SomeClass { ... }; } 作用域与可见性 命名空间作用域 一个命名空间确定了一个命名空间作用域 在该命名空间中声明的、不属于前述各作用域的标识符都属于该命名空间 命名空间内部直接引用当前命名空间中声明的标识符 引用其它命名空间作用域中的标识符 命名空间名 :: 标识符名 例:声明一个SomeClass型的对象 SomeNs :: SomeClass obj1; 7 作用域与可见性 命名空间作用域 using语句的两种形式: using 命名空间名 :: 标识符名; 该标识符暴露在当前作用域,当前作用域可以直接引用该标识符 using namespace 命名空间名; 该命名空间中的所有标识符暴露在当前作用域,当前作用域可以该命名空间中的任何标识符 8 作用域与可见性 命名空间的嵌套 引用其中的SomeClass类,需要语法形式: OuterNs :: InnerNs :: SomeClass 9 作用域与可见性 10 两类特殊的命名空间 全局命名空间 —— 默认的命名空间 显示声明的命名空间之外的标识符 匿名命名空间 —— 对每个源文件是唯一的 显示声明但没有名字的命名空间: 作用:屏蔽不希望暴露给其他源文件的标识符 作用域与可见性 11 可见性 可见性:程序运行到某一点,能够引用到的标识符,就是该处可见的标识符 可见性表示从内层作用域向外层作用域“看”时能看见什么。 如果标识在某处可见,则就可以在该处引用此标识符。 作用域与可见性 12 可见性 作用域可见性的一般规则如下: (1)标识符应声明在先,引用在后。 (2)在同一个作用域中,不能声明同名的标识符。 (3)在没有互相包含关系的不同的作用域中声明的同名标识符,互不影响。 (4)如果在两个或多个具有包含关系的作用域中声明了同名标识符,则外层标识符在内层不可见。 作用域与可见性 13 作用域与可见性实例 作用域与可见性 14 对象的生存期 生存期:对象从产生到结束的这段时间 在对象生存期内,将保持对象的状态(即数据成员的值),以及变量的值不变,直到被更新为止生存期 分为两种:静态生存期和动态生存期 15 静态生存期 定义:对象的生存期与程序的运行期相同,称它具有静态生存期 在命名空间作用域中声明的对象具有静态生存期 在局部/类作用域中声明静态生存期的对象,要冠以关键字static 例:static int i; // 未赋初值时,默认为0 static int i=5; // 可以同时赋初值 对象的生存期 16 #includeiostream using namespace std; int i = 5; //全局命名空间作用域 int main( ){ cout i= i endl; return 0; } 对象(变量)i具有静态生存期 对象的生存期 静态生存期(例) 17 静态生存期 局部作用域中静态变量的特点: 不会随着每次函数调用而产生一个副本 例如:同一标识符不会在递归调用中共享 不会随着函数返回而失效(下一次再调用时,该变量还会保持上一回的值) 例如:在函数体内定义 static int i = 5; 对象的生存期 18 动态生

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档