全局作用域,名字空间作用域,类域,局部作用域,语句作用域之间的关系如下图所示:
从上图可以看出,在全局作用域中,定义了两个名字空间H和K。名字空间H又分别位于两个CPP文件A和B中。由此可见,名字空间作用域是可以跨越CPP文件的。在名字空间K中,除了定义了类型外,又定义了一个名字空间N,所以说,名字空间之间是可以互相嵌套的。另外,在名字空间中可以定义类,函数,变量,模版等。
在全局作用域中,除了定义的名字空间H和K外,又定义了一个类D,以及全局函数,全局变量和模版。在类D中,定义了一些成员函数,因此引出了局部作用域。在局部作用域中,如果存在控制语句,就会存在语句作用域。
在各种作用域中定义的变量或对象,其生命周期从该变量被定义开始,直到该作用域结束。如:在全局作用域中定义的变量,其生命周期是整个程序的生命周期,程序运行结束,该变量被释放;在局部作用域中定义的变量,其生命周期是从定义该变量开始,直到该函数执行完毕。