我在.h
文件中有以下类定义:
namespace N {
struct S {
S(); // no definition for member here
};
}
我想在.cpp
文件中为类构造函数(一般成员)编写定义。我考虑以下两种情况:
namespace N {
S::S() { /* definition */ }
}
using namespace N;
S::S() { /* definition */ }
我有点困惑为什么第二个工作根本就是因为从来没有看过这种方式直到今天。为什么第二个工作?一些引用标准的人将不胜感激。
使用一种方法而不是另一种方法有什么细微差别?我应该更喜欢第一种还是第二种形式?
(2)工作的原因是因为这两个:
该指令只是让你为S
运算符命名::
,就好像你在N
命名空间内一样(就像你在(1)中那样)。但我不会这样做。范围很好。定义也应该是范围。
在此特定示例中,您在命名空间中仅声明了一个结构,并在单独的.cpp文件中定义了该函数,因此如果使用1或2则无关紧要。
如果您在命名空间中声明了任何其他标识符,那么1应该优先于2,因为使用声明类型会破坏具有命名空间的目的。