Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在C++;?_C++_String_Class_Visual Studio 2012_Constants - Fatal编程技术网

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