C++语言程序设计 第五章C十程序的结构 清华大学计算机与信息管理中心 郑莉
1 第五章 C++程序的结构 清华大学计算机与信息管理中心 郑 莉 C++语言程序设计
本章主要内率 作用域与可见性 ●对象的生存期 数据与函数 ●静态成员 ●共享数据的保护 友元 ●编译预处理命令 多文件结构和工程 休息
前一页 休息 2 本章主要内容 ⚫ 作用域与可见性 ⚫ 对象的生存期 ⚫ 数据与函数 ⚫ 静态成员 ⚫ 共享数据的保护 ⚫ 友元 ⚫ 编译预处理命令 ⚫ 多文件结构和工程
函数原形的作用域 作 用。函数原型中的参数,其作用域始于 ,结束于")"。 域与可见 ●例如,设有下列原型声明 double Area(double radius) 性 radius的作用域仅在于此, 不能用于程序正文其它地 方,因而可有可无 休息 3
前一页 休息 3 函数原形的作用域 ⚫ 函数原型中的参数,其作用域始于 "(",结束于")"。 ⚫ 例如,设有下列原型声明: double Area(double radius); radius 的作用域仅在于此, 不能用于程序正文其它地 方,因而可有可无。 作 用 域 与 可 见 性
块作用域 作 用。在块中声明的标识符,其作用域自声明处 域起,限于块中,例如: void fun(int a) 与 int b(a)i cin>>b if (b>0) b的作用域 见 性 intc;c的作用域 休息
前一页 休息 4 块作用域 ⚫ 在块中声明的标识符,其作用域自声明处 起,限于块中,例如: void fun(int a) { int b(a); cin>>b; if (b>0) { int c; ...... } } c的作用域 b的作用域 作 用 域 与 可 见 性
类和文件作用域 作 用。类作用域作用于特定的成员名,类及 域与可见 其对象有特殊的访问和作用域规则。 不在前述各个作用域中出现的声明, 具有文件作用域,这样声明的标识符 性的作用域开始于声明点,结束于文件 尾 休息
前一页 休息 5 类和文件作用域 ⚫ 类作用域作用于特定的成员名,类及 其对象有特殊的访问和作用域规则。 ⚫ 不在前述各个作用域中出现的声明, 具有文件作用域,这样声明的标识符 的作用域开始于声明点,结束于文件 尾。 作 用 域 与 可 见 性
可见性 作。可见性是从对标识符的引用的角度来谈 用的概念 域与可见 ●可见性表示从内层作用域向外层作用域 “看”时能看见什么。 如果标识在某处可见,则就可以在该处 性引用此标识符爱件作用线 类作用域 块作用域 休息
前一页 休息 6 可见性 ⚫ 可见性是从对标识符的引用的角度来谈 的概念 ⚫ 可见性表示从内层作用域向外层作用域 “看”时能看见什么。 ⚫ 如果标识在某处可见,则就可以在该处 引用此标识符。 块作用域 类作用域 文件作用域 作 用 域 与 可 见 性
可见性 作 用●标识符应声明在先,引用在后 域。在同一作用域中,不能声明同名的标识符 与。如果某个标识符在外层中声明,且在内层中 可没有同一标识符的声明,则该标识符在内层 见可见 性生。对于两个嵌套的作用域,如果在内层作用域 内声明了与外层作用域中同名的标识符,则 外层作用域的标识符在内层不可见 了一页休息
前一页 休息 7 可见性 ⚫ 标识符应声明在先,引用在后。 ⚫ 在同一作用域中,不能声明同名的标识符。 ⚫ 如果某个标识符在外层中声明,且在内层中 没有同一标识符的声明,则该标识符在内层 可见。 ⚫ 对于两个嵌套的作用域,如果在内层作用域 内声明了与外层作用域中同名的标识符,则 外层作用域的标识符在内层不可见。 作 用 域 与 可 见 性
例5.1 作 ifincludesjostream. h> 用 inti;∥x件作用域 域 int maIn0 与{i=5; 可{int;∥块作用域 见 性 cout<<"="<i<<end;∥输出7 cout<<"="<<i;∥输出5 return 0 休息
前一页 休息 8 #include int i; //文件作用域 int main() { i=5; { int i; //块作用域 i=7; cout<<"i="<<i<<endl; //输出 7 } cout<<"i="<<i; //输出 5 return 0; } 作用域与可见性 例 5.1
对泉的生存期 对象从产生到结束的这段时间就是 它的生存期。在对象生存期内,对象将 保持它的值,直到被更新为止。 休息
前一页 休息 9 对象的生存期 对象从产生到结束的这段时间就是 它的生存期。在对象生存期内,对象将 保持它的值,直到被更新为止
静态生存期 对 象·这种生存期与程序的运行期相同。 的。在文件作用域中声明的对象具有这种 生生存期。 存。在函数内部声明静态生存期对象,要 期冠以关键字 static。 休息
前一页 休息 10 静态生存期 ⚫ 这种生存期与程序的运行期相同。 ⚫ 在文件作用域中声明的对象具有这种 生存期。 ⚫ 在函数内部声明静态生存期对象,要 冠以关键字static 。 对 象 的 生 存 期