这里的http://www.parashift.com/c++-faq-lite/multiple-inheritance.html的第[25.14]节提到:
在继承层次中,最先执行的是虚基类的构造函数。
我尝试使用以下程序进行验证:
A (pure virtual)
|
B
|
C
(virtual)/ \ (virtual)
E D
\ /
F
|
G (pure virtual)
|
H
每个类都有一个构造函数和虚析构函数。输出如下:
A
B
C
E
D
F
G
H
~H
~G
~F
~D
~E
~C
~B
~A
Press any key to continue . . .
但根据引用的说法,虚基类构造函数应该先执行。
我理解错了什么吗?
编辑:为了澄清我的问题,据我理解,这种行为与基类是否虚无关。但是引用坚持要使用虚基类。我的表述清楚了吗?还是有什么不对劲的地方?