3. C++对C的扩展(一) --- 作用域运算符和命名空间
3.1 作用域运算符 “::”
一般来说,如果有两个同名变量,一个是全局变量,另一个是局部变量,那么局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量。
#include <iostream>
using namespace std;
int a = 10;//全局变量
void test() {
int a = 20;//局部变量
//全局a被隐藏
cout << "a:" << a << endl;
}
//主程序
int main() {
test();
}
试着运行以上代码,可以发现输出结果是“a:20”。
这是因为在test函数的输出语句中,使用的变量a是test函数内定义的局部变量,因此输出的结果为局部变量a的值,而非全局变量a的值。
因此为解决局部变量与全局变量的重名问题,就有了作用域运算符——“::”
#include <iostream>
using namespace std;
int a = 10;//全局变量
//局部变量和全局变量同名,都为a
void test() {
int a = 20;
//打印局部变量a
cout << "局部变量a:" << a <&