B M*_*B M 5 constructor initialization list
我有一个棘手的C++问题:当你有一个带有委托构造函数的构造函数初始化列表时,列表执行顺序是什么?
这里存在两个冲突的标准规则:
1.)构造函数初始化列表不是由列表顺序执行,而是由项的声明顺序执行.
2.)构造函数初始化列表中的委托构造函数总是在执行"母构造函数"之前被调用.
哪条规则优越?(因为构造函数也是一个类项)为什么这很重要:假设委托的构造函数重新插入已经由"母版构造函数"初始化的项目,反之亦然.
\xc2\xa712.6.2/6 说
\n\n\n\n\n如果mem-initializer-id指定构造函数\xe2\x80\x99s 类,则它应是唯一的mem-initializer ...一旦目标构造函数返回,就会执行委托构造函数的主体。
\n
因此不存在冲突,因为在委托构造函数之前无法初始化任何内容。委托构造函数只需调用该构造函数,运行目标构造函数的初始化程序列表,运行目标构造函数,然后运行主体构造函数。
\n