如何在 C++ 下的 class 中强制执行成员初始化?

How do I enforce member initialization in a class under C++?

我假设 const 成员必须在 class 构造函数中初始化。

考虑以下代码

class ABC
 {
  const string a;
  const string b;
  const string c;
  public:
  ABC( struct input in): a(in.a), b(in.b){}
};

我认为这会触发编译时错误,因为缺少 c 的显式初始化。但是,这会在 VS2012 下编译并为 c 提供空字符串。这是正确的行为吗? (或 string 的特例?)

const member must be initialized when declared

以上仅适用于内置和 POD types.For 非 POD 类型,将调用默认构造函数对其进行初始化。 std::string 是非 POD。

如@Dan 的评论所述,尝试将 const string c; 更改为 const int c;,编译器会报错。