将标头和 cpp 文件内容包装在名称空间中或仅包装标头内容然后在 cpp 文件中 使用名称空间 之间有什么区别?
我所说的差异是指任何可能导致问题或我需要注意的任何排序性能损失或稍微不同的语义。
例子:
// header
namespace X
{
class Foo
{
public:
void TheFunc();
};
}
// cpp
namespace X
{
void Foo::TheFunc()
{
return;
}
}
VS
// header
namespace X
{
class Foo
{
public:
void TheFunc();
};
}
// cpp
using namespace X;
{
void Foo::TheFunc()
{
return;
}
}
如果没有区别,首选形式是什么,为什么?
原文由 links77 发布,翻译遵循 CC BY-SA 4.0 许可协议
命名空间只是一种破坏函数签名的方法,这样它们就不会发生冲突。有些人更喜欢第一种方式,而另一些人更喜欢第二种方式。这两个版本对编译时性能没有任何影响。请注意,命名空间只是一个编译时实体。
使用命名空间出现的唯一问题是我们有相同的嵌套命名空间名称(即)
X::X::Foo
。这样做会在使用或不使用关键字的情况下造成更多的混乱。