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