我对委托构造函数有一个误解。委托构造函数定义如下(12.6.2 / 6 N3797):
mem-initializer-list可以委托给另一个构造函数 构造函数的类使用表示的任何class-ordecltype 构造函数的类本身。
和12.6.2 / 8:
对类X的构造函数的调用完成后,如果是成员 在执行期间,X既未初始化也未给出值 构造函数体的复合语句,成员有 不确定的价值。
也就是说,在完成一个构造函数体的执行后,X就完成了。在委托构造函数的情况下,如下所示:
#include <iostream>
using std::cout;
using std::endl;
struct A
{
A(int)
{
cout << "A(int)" << endl;
}
A() : A(4)
{
cout << "A()" << endl;
}
};
A a;
int main()
{
}
对象a是否已完成A(int)
正文已完成或A()
正文完成后是否已完成?