gpt4 book ai didi

c++ - 继承层次结构 : Constructor & Destructor execution sequence

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:25 27 4
gpt4 key购买 nike

在这里http://www.parashift.com/c++-faq-lite/multiple-inheritance.html [25.14] 节说

The very first constructors to be executed are the virtual base classes anywhere in the hierarchy.

我尝试使用以下程序验证它:

           A (pure virtual)
|
B
|
C
(virtual)/ \ (virtual)
E D
\ /
F
|
G (pure virtual)
|
H

每个类都有一个 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 . . .

但根据引述,应该首先执行虚拟基类构造函数。

我哪里理解错了?

编辑:为了澄清我的问题,根据我的理解,这种行为与基类是否为虚拟无关。但报价坚持虚拟基类。我清楚还是有什么可疑的地方?

最佳答案

虚基类如果不先构造其继承的类,则不能构造虚基类。因此,在您的情况下,构造非虚拟基类是因为虚拟基类依赖于它们: C 不能构造直到 AB是。因此,AB 确实在C 之前构造,即使C 实际上是继承的。

关于c++ - 继承层次结构 : Constructor & Destructor execution sequence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7078417/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com