问题
int x;//全局变量
void fun()
{
double x;//掩盖全局x
cin >> x;
}
方法
上述代码中查找x的规则是,在fun的作用域内搜索是否存在x名称,如果不存在则在global作用域中搜索。上述搜索规则,** 只在乎名称,而不管变量的类型**
int x;//全局变量
void fun()
{
double x;//掩盖全局x
cin >> x;
cin >> ::x;//使用using 作用域来使上层作用域中的名称可见
}
结论
- 掩盖规则只关乎名称(标识符),而于具体的类型无关。也就是名字匹配优先于类型检查。
- 若要想被掩盖的名称可见,则需要使用using 声明式。
网友评论