C++语言程序设计 包见性 作 用 ● 标识符应声明在先,引用在后。 域·如果某个标识符在外层中声明,且在内层中 与 没有同一标识符的声明,则该标识符在内层 可 可见。 见。对于两个嵌套的作用域,如果在内层作用域 内声明了与外层作用域中同名的标识符,则 外层作用域的标识符在内层不可见。 11
C++语言程序设计 11 可见性 标识符应声明在先,引用在后。 如果某个标识符在外层中声明,且在内层中 没有同一标识符的声明,则该标识符在内层 可见。 对于两个嵌套的作用域,如果在内层作用域 内声明了与外层作用域中同名的标识符,则 外层作用域的标识符在内层不可见。 作用域与可见性
C++语言程序设计 同一作用域中的同名标识符 作 用 ● 在同一作用域内的对象名、函数名、 域 枚举常量名会隐藏同名的类名或枚举 与 类型名。 可 。重载的函数可以有相同的函数名。 见 性
C++语言程序设计 12 同一作用域中的同名标识符 在同一作用域内的对象名、函数名、 枚举常量名会隐藏同名的类名或枚举 类型名。 重载的函数可以有相同的函数名。 作用域与可见性
C++语言程序设计 例 5.1 作 #include <iostream using namespace std 用 int i; 在全局命名空间中的全局变量 namespace Ns 域 int j: //在Ns命名空间中的全局变量 与 int main(){ i=5: 可 Ns::j=6; /子块1 见 using namespace Ns; 当前块中可以直接引用Ns中的标识符 1nt1: /局部变量,局部作用域 性 i=7: cout"i=”<i<endl:/输出7 cout<"j=”<j<endi;/输出6 cout<"i=”<i<endl;/输出5 return 0; 日
C++语言程序设计 13 #include <iostream> using namespace std; int i; //在全局命名空间中的全局变量 namespace Ns { int j; //在Ns命名空间中的全局变量 } int main() { i = 5; //为全局变量i赋值 Ns::j = 6; //为全局变量j赋值 { //子块1 using namespace Ns; //当前块中可以直接引用Ns中的标识符 int i; //局部变量,局部作用域 i = 7; cout << "i = " << i << endl;//输出7 cout << "j = " << j << endl;//输出6 } cout << "i = " << i << endl; //输出5 return 0; } 作用域与可见性 例 5.1
C++语言程序设计 对象的生存期 对象从产生到结束的这段时间就是 它的生存期。在对象生存期内,对象将 保持它的值,直到被更新为止。 *半 14
C++语言程序设计 14 对象的生存期 对象从产生到结束的这段时间就是 它的生存期。在对象生存期内,对象将 保持它的值,直到被更新为止
C++语言程序设计 静态生存期 对 象 ·这种生存期与程序的运行期相同。 的 。在命名空间作用域中声明的对象具有 生 这种生存期。 存 ·在函数内部声明静态生存期对象,要 期 冠以关键字static。 ·定义时未指定初值的基本类型静态生 存期变量,会被赋0值初始化
C++语言程序设计 15 静态生存期 这种生存期与程序的运行期相同。 在命名空间作用域中声明的对象具有 这种生存期。 在函数内部声明静态生存期对象,要 冠以关键字static 。 定义时未指定初值的基本类型静态生 存期变量,会被赋0值初始化 对象的生存期