在C++11中,可以在声明时直接初始化类成员。但是在构造函数的初始化列表中再次初始化它们也是可以的...为什么呢?
#include <iostream>
struct MyStr
{
MyStr()
:j(0)
{
std::cout << "j is " << j << std::endl; // prints "j is 0"
}
const int j = 1;
};
int main()
{
const int i = 0;
MyStr mstr;
}
因为像这样做是错误的,这是可以理解的:
MyStr()
:j(0),
j(1)
{
}
第一个例子有何不同之处,数据成员在声明时初始化,然后在构造函数的初始化列表中再次初始化?