具有委托构造函数的构造函数初始化列表执行顺序

B M*_*B M 5 constructor initialization list

我有一个棘手的C++问题:当你有一个带有委托构造函数的构造函数初始化列表时,列表执行顺序是什么?

这里存在两个冲突的标准规则:
1.)构造函数初始化列表不是由列表顺序执行,而是由项的声明顺序执行.
2.)构造函数初始化列表中的委托构造函数总是在执行"母构造函数"之前被调用.

哪条规则优越?(因为构造函数也是一个类项)为什么这很重要:假设委托的构造函数重新插入已经由"母版构造函数"初始化的项目,反之亦然.

Set*_*gie 3

\xc2\xa712.6.2/6 说

\n\n
\n

如果mem-initializer-id指定构造函数\xe2\x80\x99s 类,则它应是唯一的mem-initializer ...一旦目标构造函数返回,就会执行委托构造函数的主体。

\n
\n\n

因此不存在冲突,因为在委托构造函数之前无法初始化任何内容。委托构造函数只需调用该构造函数,运行目标构造函数的初始化程序列表,运行目标构造函数,然后运行主体构造函数。

\n