簡體   English   中英

在C ++中將類特定的命名常量存儲在何處

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM