C++语言程序设计 第五章C+程序的结构
1 第五章 C++程序的结构 C++语言程序设计
C++语言程序设计 本章主要内容 ●作用域与可见性 ●对象的生存期 ●数据与函数 ●静态成员 ●友元 共享数据的保护 编译预处理命令 ●多文件结构和工程 x
C++语言程序设计 2 本章主要内容 ⚫ 作用域与可见性 ⚫ 对象的生存期 ⚫ 数据与函数 ⚫ 静态成员 ⚫ 友元 ⚫ 共享数据的保护 ⚫ 编译预处理命令 ⚫ 多文件结构和工程
C++语言程序设计 作用域 作用域与可见 作用域是一个标识符在程序正文中有 效的区域。作用域开始于标识符的声 明处。C++中标识符的作用域有 函数原型作用域 块作用域 性 类作用域 文件作用域 x
C++语言程序设计 3 作用域 作用域是一个标识符在程序正文中有 效的区域。作用域开始于标识符的声 明处。C++中标识符的作用域有: 函数原型作用域 块作用域 类作用域 文件作用域 作 用 域 与 可 见 性
C++语言程序设计 函教原型的作用域 作 用。函数原型中的参数,其作用域始于 域"(",结束于")" 与。例如,设有下列原型声明: double Area(double radius) 性 radius的作用域仅在于此, 不能用于程序正文其它地 方,因而可有可无
C++语言程序设计 4 函数原型的作用域 ⚫ 函数原型中的参数,其作用域始于 "(",结束于")"。 ⚫ 例如,设有下列原型声明: double Area(double radius); radius 的作用域仅在于此, 不能用于程序正文其它地 方,因而可有可无。 作 用 域 与 可 见 性
C++语言程序设计 块作用域 作 用在块中声明的标识符,其作用域自声明处 起,限于块中,例如: 域 void fun (int a) 与可见 int b(a)i cin>>bi if (b>0) b的作用域 性 int c的作用域 x
C++语言程序设计 5 块作用域 在块中声明的标识符,其作用域自声明处 起,限于块中,例如: void fun(int a) { int b(a); cin>>b; if (b>0) { int c; ...... } } c的作用域 b的作用域 作 用 域 与 可 见 性
C++语言程序设计 类作用域 作 用·类的成员的作用域是类作用域,在类外 域部只有通过对象名和成员访问符“”来访 与问类的公有成员。在类外不能访问类的 见私有成员。 性·类的成员函数可以直接访问类的数据成 员 x
C++语言程序设计 6 类作用域 ⚫ 类的成员的作用域是类作用域,在类外 部只有通过对象名和成员访问符“ . ”来访 问类的公有成员。在类外不能访问类的 私有成员 。 ⚫ 类的成员函数可以直接访问类的数据成 员。 作 用 域 与 可 见 性
C++语言程序设计 文件作用域 作 用不在前述各个作用域中出现的声明, 域具有文件作用域,这样声明的标识符 与的作用域开始于声明点,结束于文件 尾 性 x
C++语言程序设计 7 文件作用域 不在前述各个作用域中出现的声明, 具有文件作用域,这样声明的标识符 的作用域开始于声明点,结束于文件 尾。 作 用 域 与 可 见 性
C++语言程序设计 可见性 作。可见性是从对标识符的引用的角度来谈 用标识符的有效性。 域 与°可见性表示从内层作用域向外层作用域 “看”时能看见什么 见●如果标识在某处可见,则就可以在该处 性引用此标识符。 文件作用域 类作用域 块作用域 ,*x
C++语言程序设计 8 可见性 ⚫ 可见性是从对标识符的引用的角度来谈 标识符的有效性。 ⚫ 可见性表示从内层作用域向外层作用域 “看”时能看见什么。 ⚫ 如果标识在某处可见,则就可以在该处 引用此标识符。 块作用域 类作用域 文件作用域 作 用 域 与 可 见 性
C++语言程序设计 可见性 作 用。标识符应声明在先,引用在后。 域。如果某个标识符在外层中声明,且在内层中 与没有同一标识符的声明,则该标识符在内层 可可见 见。对于两个嵌套的作用域,如果在内层作用域 性生内声明了与外层作用域中同名的标识符,则 外层作用域的标识符在内层不可见
C++语言程序设计 9 可见性 ⚫ 标识符应声明在先,引用在后。 ⚫ 如果某个标识符在外层中声明,且在内层中 没有同一标识符的声明,则该标识符在内层 可见。 ⚫ 对于两个嵌套的作用域,如果在内层作用域 内声明了与外层作用域中同名的标识符,则 外层作用域的标识符在内层不可见。 作 用 域 与 可 见 性
C++语言程序设计 例5-1 作用 include using namespace std; 域int;∥文件作用域 int main( 与可见 {i=5; int;∥块作用域 =7 cout<<"i="<<<<end;∥输出7 性 cou<"i="<<i;∥输出5 return 0 x
C++语言程序设计 10 #include using namespace std; int i; //文件作用域 int main() { i=5; { int i; //块作用域 i=7; cout<<"i="<<i<<endl; //输出 7 } cout<<"i="<<i; //输出 5 return 0; } 作用域与可见性 例 5 - 1