包括:局部作用域、全局作用域、文件作用域、函数作用域、函数原型作用域、名空间作用域、类作用域
注意:潜在作用域,也就是同名变量的作用域问题。
1. 局部作用域
指在函数定义或者复合语句中,从标识符的定义点开始到函数或者复合语句结束之间的程序段。
在同一个局部作用域内不能出现相同名字的两个局部变量(包括形参)。
一个函数内的复合语句又是一个局部作用域,也就是在函数内有某个变量时,复合语句中可以有另外一个同名字的变量。
2. 全局作用域
指对构成C++程序的所有源文件。
在C++标准中,把全局作用域归于连接控制范畴。
通常把全局标识符的生命放在某个头文件中。
3. 文件作用域
指单独的一个源文件。
在全局标识符的定义中加上static修饰符,该全局标识符就变成了具有文件作用域的标识符。
4. 函数作用域
指由整个函数定义所构成的程序段。
语句标号(如goto语句中使用的语句标识)是唯一的具有函数作用域的标识符。
5. 函数原型作用域
指用于函数声明的函数原型,其中的形参的作用域从函数原型开始到函数原型结束。
如:void f(int x, double y); //其中的x和y的作用域从“(”开始到")"结束。
6. 名空间作用域
无名的名空间定义不能在其他地方调用
7. 类空间作用域