【发布时间】:2014-11-03 17:59:13
【问题描述】:
对于以下代码:
class A
{
public:
const int cx = 5;
};
在这里,将为 A 的每个对象创建一个 cx 的实例。这对我来说似乎是一种浪费,因为 cx 永远无法修改。实际上,我看不出编译器不应该强制将 const 数据成员设为静态的任何理由。谁能给我解释一下?
【问题讨论】:
-
可能有 RAII 应用程序...
-
这就像说编译器应该坚持所有静态数据都是恒定的。有些人喜欢他们的成员保持不变
-
您仍然可以添加其他构造函数以使
cx具有不同的值。 -
std::map的值类型是std::pair<const key_type, mapped_type>,因此具有非静态 const 成员。 -
在这个人为的例子中是一种浪费。但总的来说,
const成员没有理由对所有对象都具有相同的值。