何时在C++中使用未命名的命名空间?在任何意义上它比独立功能更好吗?是否应该仅在源文件中使用而不在头文件中使用?
T.E*_*.D. 60
根据Stroustrup的说法,你应该在老C的地方使用它来制作static
全局变量.这个想法是有问题的项目可以是它们所在源文件的"全局",但不会污染编译中任何其他源文件的命名空间.
换句话说,您不应该static
在C++中创建全局变量.您应该使用未命名的命名空间.
我发现了一些在头文件中有用的情况,但这种情况应该很少见.我认为主要用于声明可抛出的异常.在这种情况下,所讨论的定义对于#include
该标题的所有内容都是全局的,但对于那些没有的内容则不是.
sha*_*oth 27
未命名的命名空间对于翻译单元是私有的,这可以用于屏蔽在不同翻译单元中出现的具有相同名称的全局变量和函数,从而不会出现链接冲突.
例如,您需要一个只在.cpp文件中定义并仅在该文件中使用的类.你想打电话给它CModuleLock
.如果它不在未命名的命名空间中,并且某些其他.cpp文件意外地具有CModuleLock
不在未命名的命名空间中的另一个类,则您将无法链接您的程序.
归档时间: |
|
查看次数: |
27830 次 |
最近记录: |