Azo*_*ous 6 c++ inheritance constructor destructor
这里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
Run Code Online (Sandbox Code Playgroud)
每个班级都有一个c'tor和virtual d'tor.输出如下:
A
B
C
E
D
F
G
H
~H
~G
~F
~D
~E
~C
~B
~A
Press any key to continue . . .
Run Code Online (Sandbox Code Playgroud)
但根据引用,应首先执行虚拟基类构造函数.
我做错了什么?
编辑:要清除我的问题,根据我的理解,这种行为与基类是否是虚拟无关.但引用坚持Virtual Base类.我清楚还是有什么可疑的?
谢谢.
如果虚拟基类所继承的类不是首先构造的,则无法构造。因此,在您的情况下,将构造非虚拟基类,因为虚拟基类依赖于它们:C在A和之前不能构造B。因此,A和B确实以前建造的C,即使C是虚拟继承。