考虑一对两个源文件:一个接口声明文件( *.h
或 *.hpp
)及其实现文件( *.cpp
)。
让 *.h
文件如下所示:
namespace MyNamespace {
class MyClass {
public:
int foo();
};
}
我已经看到了在源文件中使用命名空间的两种不同做法:
*.cpp
展示练习#1:
#include "MyClass.h"
using namespace MyNamespace;
int MyClass::foo() { ... }
*.cpp
展示练习#2:
#include "MyClass.h"
namespace MyNamespace {
int MyClass::foo() { ... }
}
我的问题: 这两种做法之间有什么区别吗?一种被认为比另一种更好吗?
原文由 nickolay 发布,翻译遵循 CC BY-SA 4.0 许可协议
从代码可读性的角度来看,出于这个原因,我认为使用#2 方法可能更好:
您可以是
using
一次有多个命名空间,并且写在该行下方的任何对象或函数都可以属于这些命名空间中的任何一个(除非命名冲突)。将整个文件包装在namespace
块中更加明确,并允许您在 .cpp 文件中声明属于该命名空间的新函数和变量