美文网首页
条款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