[英]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.