美文网首页
条款33:避免遮掩继承而来的名称

条款33:避免遮掩继承而来的名称

作者: 沧海梦帆 | 来源:发表于2016-12-02 20:22 被阅读0次

问题

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 声明式。

相关文章

网友评论

      本文标题:条款33:避免遮掩继承而来的名称

      本文链接:https://www.haomeiwen.com/subject/awyqmttx.html