作用域运算符::
问题引入
通常情况下,如果有两个同名变量,一个是全局变量,另一个是局部变量;那么局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量。
cpp
#include <iostream>
using namespace std;
int a = 20;
void test()
{
// 局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量。
int a = 10;
cout << "a = " << a << endl;
}
int main(int argc, char const *argv[])
{
test();
return 0;
}
程序输出:
shell
a = 10
在test函数的输出语句中,使用的变量a是test函数内定义的局部变量,因此输出的结果为局部变量a的值。
作用域运算符可以用来
作用域运算符
作用域运算符使用实例
cpp
#include <iostream>
using namespace std;
int a = 20;
void test()
{
// 局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量。
int a = 10;
cout << "局部变量a:" << a << endl;
// 打印全局变量a
// ::代表作用域 如果前面什么都没加就代表全局作用域
cout << "全局变量a:" << ::a << endl;
}
int main(int argc, char const *argv[])
{
test();
return 0;
}
程序输出:
shell
局部变量a:10
全局变量a:20
这个例子可以看出,作用域运算符可以用来解决局部变量与全局变量的重名问题,即在局部变量的作用域内,可用::
对被屏蔽的同名的全局变量进行访问。