当前位置:  开发笔记 > 编程语言 > 正文

C++命名空间问题

如何解决《C++命名空间问题》经验,为你挑选了1个好方法。

我正在研究一些不再与公司合作的同事编写的代码,我找到了以下代码:(我已在下面删除了)

namespace NsA { namespace NsB { namespace NsC {

    namespace { 
        class A { /*etc*/ };
        class B { /*etc*/ };
    }    

    namespace {
        class C { /*etc*/ };
    }
} } }

我不明白第3行和第8行的命名空间命令的用途.
有人可以解释没有名称的命名空间条目的用途是什么吗?
谢谢



1> Joris Timmer..:

这是一个"匿名命名空间" - 它创建一个隐藏的命名空间名称,保证每个"翻译单元"(即每个CPP文件)是唯一的.

这实际上意味着该命名空间内的所有项都在编译单元外部隐藏.它们只能在同一个文件中使用.另请参阅有关未命名命名空间的文章.


@GregRogers:是联系很重要,模板只能用外部链接的对象实例化(例如,尝试在函数内声明一个类并在vector <>中使用它,将无法工作,在函数的未命名命名空间中的类:将起作用.. .)
推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有