我正在查看一些(C++)代码,发现了这样的东西:
//Foo.cpp
namespace
{
void SomeHelperFunctionA() {}
void SomeHelperFunctionB() {}
void SomeHelperFunctionC() {}
//etc...
class SomeClass //<---
{
//Impl
};
}
SomeHelperFunction[A-Z]
是仅在该翻译单元中需要的功能,所以我理解它们为什么在匿名namespace
. 同样,SomeClass
也仅在该翻译单元中需要,但我的印象是,如果您没有全局类声明(例如,在一个通常包含的头文件)。
我还应该提到,这个特定的翻译单元不包含任何可能声明具有相同名称 ( SomeClass
) 的类的标头。
那么,鉴于这些信息,有人可以解释一下为什么最初的程序员可能会这样做吗?也许只是作为未来的预防措施?
老实说,我以前从未见过匿名命名空间中使用的类。
谢谢!