Here http://www.parashift.com/c++-faq-lite/multiple-inheritance.html 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
每个班级都有一名c'tor和虚拟d'tor。输出如下:
A
B
C
E
D
F
G
H
~H
~G
~F
~D
~E
~C
~B
~A
Press any key to continue . . .
但根据引用虚拟基类构造函数应该首先执行。
我理解错了什么?
EDIT:为了澄清我的问题,根据我的理解,这种行为与基类是否是虚拟的无关。但引用坚持虚拟基类。我清楚还是有什么可疑之处?
如果不先构造虚拟基类继承的类,则无法构造虚拟基类。因此,在您的情况下,构造非虚拟基类是因为虚拟基类依赖于它们:C
无法构建直到A
and B
是。所以,A
and B
确实之前构建过C
, 虽然C
实际上是遗传的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)