[英]Where to store Class Specific named constants in C++
如果您的類具有一些命名常量,那么存儲常量的最佳方法是:
選項1:類頭中的命名空間
因此,在我的班級標題中,我將有:
class myClass
{
...
...
};
namespace NamedConstants
{
const string Bucket = "Bucket";
}
選項2成員常量
class MyClass { // this goes in the class
private: // header file
static const string Bucket;
...
};
...並在類實現文件中:
const string MyClass::Bucket = "Bucket";
實際上,我更喜歡選項1,因為它更干凈:變量名和值一起出現。 同樣,如果給命名空間起一個好名字,那么當您使用常量時,它可以使代碼更具可讀性:
TrafficLight::Green
是否有人在選項2上看到此方法有任何問題?
如果字符串是要由該類的用戶查看/使用的,則不會考慮將其設為private
類成員。 因此,我得出結論,本課程的用戶無意看到/使用它們。 但是,將它們放在標頭中根本沒有意義。
如果將它們放入類(或放入標頭的名稱空間范圍),則對它們的類型和標識符的所有更改都將迫使客戶端重新編譯其代碼。
如果將它們放入類的實現文件中 ,它們是該類實現的私有詳細信息,對它們的更改僅會強制重新編譯該類的實現。
如果將它們放在未命名的命名空間中 ,則它們不能與任何其他名稱沖突:
namespace {
namespace NamedConstants
{
const string Bucket = "Bucket";
}
}
選項1可以為包含頭文件的每個文件導致一個單獨的字符串對象。 因此,這取決於您的資源有多稀缺。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.