5

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

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

哪条规则更胜一筹?(因为构造函数也是类项)为什么这很重要:假设委托的构造函数重新初始化已经由“母构造函数”初始化的项,反之亦然。

4

1 回答 1

3

§12.6.2/6 说

如果一个mem-initializer-id指定了构造函数的类,它应该是唯一的mem-initializer ... 一旦目标构造函数返回,委托构造函数的主体就被执行。

所以没有冲突,因为在委托构造函数之前你不能初始化任何东西。委托构造函数只需调用该构造函数,运行目标构造函数的初始化程序列表,运行目标构造函数,然后运行主体构造函数。

于 2013-02-13T16:14:52.473 回答