有没有any以下功能或优化之间的区别?
// SomeClass.cpp
#include "SomeClass.h"
#include "SomeOtherClassInSomeClassNamespace.h"
using namespace SomeClassNamespace;
SomeClass::SomeClass() {}
void SomeClass::SomeFunc()
{
// uses some stuff in SomeClassNamespace not defined in SomeClass.h
}
or
// SomeClass.cpp
#include "SomeClass.h"
#include "SomeOtherClassInSomeClassNamespace.h"
namespace SomeClassNamespace
{
SomeClass::SomeClass() {}
void SomeClass::SomeFunc()
{
// uses some stuff in SomeClassNamespace not defined in SomeClass.h
}
}
以下之间有功能上的区别吗?
只要合并的作用域按预期解析,那么No.
以下之间有优化差异吗?
运行时或二进制大小?No.
如果你想build优化,然后将通过引入额外的复杂性using
和/或重新打开命名空间。
我不使用前者,因为分辨率可能会出现问题。
我不使用后者,因为很容易得到新的声明。
我的使用方式:
namespace {
// ... private stuff
}
SomeClassNamespace::SomeClass::SomeClass() {}
...
这有点冗长,但可以快速解析定义及其声明,减少冲突的机会,可以减少程序员错误,并且如果匿名命名空间中的定义最终被导出,则可以减少二进制大小(如果您也使用私有实现) 。当然,保留你的内心也是有意义的(“SomeClassNamespace 中的某些内容未在 SomeClass.h 中定义”)位于正确的命名空间中(假设它们在多个 TU 中使用)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)