c++提供一元作用域分辨函数运算符(::),以便于当全局变量和局部变量名字相同时调用全局变量,但是不能用于访问外层语句块中具有相同名字的局部变量。 (用于补充上一篇文章的不足之处。)
#include <iostream>
using namespace std;
int x=1;
int main()
{
double x=10.5;
printf("%f\n",x);
printf("%d\n",::x);
return 0;
}
上面是全局变量和局部变量重名的时候,但是当全局变量不与局部变量重名是,可以直接用他的名字来调用。
这个运算符号不能用来访问语句块中的局部变量,如:
#include <iostream>
using namespace std;
//int x=1;
int main()
{
double x=10.5;
printf("%f\n",x);
{
int x=1;//语句块
}
printf("%d\n",::x);
return 0;
}
这样的用法就是不行的,可以简单的把它认为是一个全局变量的专属函数哟!