[英]Should I prefer static const variables at class or namespace scope?
一个相对于另一个有什么明显的好处吗? 我开始使用后者,因为它不会用静态const声明污染头文件,因此它读起来有点容易。 我经常在几个成员函数中使用这些常量。
班级范围:
.HPP
class MyType
{
private:
static const std::wstring kFoo;
}
的.cpp
const wstring MyType::kFoo(L"foo");
...
void MyType::parse(const wstring& input)
{
if (input == kFoo) { do1; }
...
}
与
命名空间范围
的.cpp
const wstring kFoo(L"foo");
...
void MyType::parse(const wstring& input)
{
if (input == kFoo) { do1; }
...
}
首先,
const wstring kFoo(L"foo");
在全局范围内,不在namespace
。 您可以轻松地将其包装在匿名namespace
。
namespace
{
const wstring kFoo(L"foo");
}
关于最好使用类的static
成员还是使用namespace
的成员的问题,答案取决于团队编码风格准则以及个人喜好。
我的建议是将其放在.cpp文件中的匿名namespace
下。 这样,它可以保留实现细节,并且类定义不会受到实现细节的污染。
PS
请注意, 类[ v ++]中的类与名称空间中的静态字符串常量问题[c ++]解决了该问题,但有所不同。 在另一篇文章中,用户希望在多个文件之间共享static
成员变量。 在您的文章中,您已明确地将static
成员变量作为private
成员,因此不会在文件中共享。 如果该评估是不正确的,则您的问题是另一个问题的重复,因此应同样予以解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.