C++ 我应该更喜欢类或命名空间范围中的静态常量变量吗?

C++ 我应该更喜欢类或命名空间范围中的静态常量变量吗?,c++,C++,一个比另一个有任何有形的好处吗?我已经开始使用后者,因为它不会用静态const声明污染头文件,所以更容易阅读。我经常只在几个成员函数中使用这些常量 类别范围: .水电站 .cpp 与 命名空间范围 .cpp 首先, const wstring kFoo(L"foo"); 在全局范围内,而不是在命名空间中。您可以轻松地将其包装到匿名命名空间中 namespace { const wstring kFoo(L"foo"); } 至于使用类的静态成员还是命名空间中的成员更好,答案取决于团队编

一个比另一个有任何有形的好处吗?我已经开始使用后者,因为它不会用静态const声明污染头文件,所以更容易阅读。我经常只在几个成员函数中使用这些常量

类别范围:

.水电站

.cpp

命名空间范围

.cpp

首先,

const wstring kFoo(L"foo");
在全局范围内,而不是在
命名空间中。您可以轻松地将其包装到匿名
命名空间中

namespace
{
   const wstring kFoo(L"foo");
}
至于使用类的
静态成员还是
命名空间中的成员更好,答案取决于团队编码风格指导原则以及个人偏好

我的建议是将它放在.cpp文件中的匿名
命名空间下。这样,它可以保持实现细节,并且类定义不会被实现细节污染

PS

请注意,问题补充了问题,但有所不同。在另一篇文章中,用户希望在多个文件中共享
静态
成员变量。在您的帖子中,您已经明确地将
静态
成员变量作为
私有
成员,因此不能通过sss文件共享。如果该评估不正确,则您的问题与另一个问题重复,因此应关闭该问题。

首先

const wstring kFoo(L"foo");
在全局范围内,而不是在
命名空间中。您可以轻松地将其包装到匿名
命名空间中

namespace
{
   const wstring kFoo(L"foo");
}
至于使用类的
静态成员还是
命名空间中的成员更好,答案取决于团队编码风格指导原则以及个人偏好

我的建议是将它放在.cpp文件中的匿名
命名空间下。这样,它可以保持实现细节,并且类定义不会被实现细节污染

PS


请注意,问题补充了问题,但有所不同。在另一篇文章中,用户希望在多个文件中共享
静态
成员变量。在您的帖子中,您已经明确地将
静态
成员变量作为
私有
成员,因此不能通过sss文件共享。如果该评估不正确,则您的问题与另一个问题是重复的,因此值得关闭。

部分问题实际上是可移植性问题:您希望其他应用程序能够访问您的静态常量值吗?如果它们(仅)与该类相关,请将它们保留在您的类中。如果它们与某个特定类无关,请将它们保留在命名空间中。部分内容的可能重复实际上是一个可移植性问题:是否希望其他应用程序能够访问您的静态常量值?如果它们(仅)与该类相关,请将它们保留在类中。如果它们与某个特定的类无关,请将它们保存在名称空间中。感谢的可能重复,这也是我一直倾向于的。是的,你的PS假设是正确的,这与那个问题不同。谢谢,这也是我一直倾向于的。是的,你的PS假设是正确的,这和那个问题不同。
namespace
{
   const wstring kFoo(L"foo");
}