如何正确定义已在标头中声明的名称空间内的实体?

2024-01-04

考虑一对两个源文件:一个接口声明文件(*.h or *.hpp)及其实现文件(*.cpp).

Let the *.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() { ... }

}

我的问题:这两种做法之间有什么区别吗?一种被认为比另一种更好吗?


从代码可读性的角度来看,我认为使用 #2 方法可能更好,因为这个原因:

你可以using一次多个命名空间,并且该行下方编写的任何对象或函数都可以属于这些命名空间中的任何一个(除非命名冲突)。将整个文件包装在一个namespaceblock 更加明确,并且允许您在 .cpp 文件中声明属于该命名空间的新函数和变量

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何正确定义已在标头中声明的名称空间内的实体? 的相关文章

随机推荐