通常情况下,如果有两个同名变量,一个是全局变量,另一个是局部变量,那么局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量。如果想在局部变量中访问全局变量,可以用::运算符,程序代码如下
#if 1
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
int a = 10;
void test()
{
int a = 20;
cout << "a:" << a << endl;
cout << "a:" << ::a << endl;
}
int main()
{
test();
system("pause");
return EXIT_SUCCESS;
}
#endif
误区:
作用域运算符可以用来解决局部变量与全局变量的重名问题,即在局部变量的作用域内,可用::对被屏蔽的同名的全局变量进行访问。
此时注意不能在::a前面加上std,std::表示的是std类里面的,如果是std::a,程序会报错
严重性 代码 说明 项目 文件 行 禁止显示状态
错误(活动) E0135 namespace “std” 没有成员 “a” 作用域 D:\c项目\作用域\main.cpp 10