我希望能够为类提供默认名称,以便在记录错误时始终可以使用合理的名称。我不需要(或不希望)这个名字成为类本身的一部分。这个默认名称永远不会改变,因此很适合成为 const
甚至 constexpr
但你不能做 constexpr QString
或 constexpr std::string
无论出于何种原因。
在我的cpp文件中,这样做更好吗
namespace {
const QString NAME("Some Name");
}
或
namespace {
static const QString NAME("Some Name");
}
我知道这两个版本都会导致 NAME
具有内部链接,但最佳做法是什么?我看过一些关于将全局变量移动到匿名命名空间的讨论,但没有一个提到在命名空间内使用 static
。
引用资料:
最佳答案
static
在匿名命名空间中是完全多余的。它什么都不做。
将其排除在外,因为它只会在该上下文中增加噪音和额外的输入。 像 clang-tidy 这样的工具甚至会生成一个关于它是多余的警告(取决于使用的选项),所以将它排除在外也可以减少工具的噪音。
关于c++ - 匿名命名空间中的 const 与 static const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58630567/