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

问题

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 声明式。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,260评论 19 139
  • 来源:仗剑走天涯! 关于javascript的作用域的一些总结,主要参考以上文章,加上自己的整理的理解。 近日对j...
    Michael_林阅读 4,527评论 0 1
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 6,156评论 0 12
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,791评论 0 6
  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 6,495评论 0 7

友情链接更多精彩内容