可能是重复问题:
静态成员类与普通的C样式接口
我正在查看某人的代码,有几十个常量在一个类中定义如下:
// header file
class Defines
{
public:
static const int Val1;
static const int ValN;
static const char* String1;
static const char* StringN;
...
}
// .CPP
const char* Defines::String1 = "some value"
etc.
与使用命名空间相比,这样做的原因是什么?它们之间有优缺点吗?
--------- 编辑 ----------
很抱歉,我显然应该明确指出这一点,因为没有人从类的名称 - "Defines"中推断出来 - 即这些常量与特定类无关,已经创建了一个专门用于保存常量而不包含其他内容的类 Defines。
我的问题不是为什么要将常量放置在特定的类中,而是有没有价值将它们收集在一起并放置在一个只收集常量的类中,而不是将它们收集在命名空间中,或者仅将它们收集在专门用于此目的的头文件中等。
(项目中没有当前存在的命名空间,因此答案中提到的污染命名空间的潜在问题在这种情况下不相关。)
----- 第32次编辑 -----------
另外一个问题是 --- 将
const char* Defines::StringN = "Somevalue"
放在.h文件中与放在.cpp文件中相比效率低吗?