【发布时间】:2014-08-25 23:29:17
【问题描述】:
考虑以下代码:
class A {};
class B : virtual public A {};
class C : virtual public A {};
class D : public B, public C {};
D d;
Visual Studio的编译器先调用B类的构造函数,再调用C类的构造函数。但这是一个规则,即ISO C++标准是否保证构造函数调用的顺序?
【问题讨论】:
-
@Holt:这显然不是...?
-
@LightnessRacesinOrbit 他们是相关的;成为
virtual不会改变这种情况。但我确实认为这个问题中给出的答案比另一个问题更清楚。 -
Eduard,上述问题的
virtual部分与答案无关。你介意我们把它从问题中删除,以便这个问题更普遍适用吗?
标签: c++ inheritance constructor language-lawyer virtual-inheritance