繁体   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