如何在 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;
,编译器会报错。
我假设 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;
,编译器会报错。