C++ 如何在C++;?
我假设C++ 如何在C++;?,c++,string,class,visual-studio-2012,constants,C++,String,Class,Visual Studio 2012,Constants,我假设const成员必须在类构造函数中初始化 考虑以下代码 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并为其提供空字符串。这是正确的行为吗?(或字符串的特殊情况?) 以上仅适用于内置类型和POD类型。对于非POD
const
成员必须在类构造函数中初始化
考虑以下代码
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
并为其提供空字符串。这是正确的行为吗?(或字符串的特殊情况
?)
以上仅适用于内置类型和POD类型。对于非POD类型,将调用默认构造函数对其进行初始化。
std::string
是非POD
正如@Dan在评论中提到的,尝试更改
const字符串c代码>到常量int c代码>,编译器将投诉。它已初始化。只是隐式的。const
意味着成员一旦构造就不会被更改;在您的示例中,c
是使用其默认构造函数初始化的。@Gaurva Sehgal一定是在接受作为答案时意外单击了它
const member must be initialized when declared