如果我有以下层次结构:
- F 类包含类型的成员对象(E 类和 D 类,按此顺序声明)
- F类继承具体类C类
- C类继承抽象/纯虚类B类
- B类继承具体类A
如果调用 F 类对象的析构函数,则按以下顺序发生以下情况:
- 调用 F 类(派生最多的)析构函数并完成
- 调用 D 类(成员对象 2)析构函数并完成
- 调用 E 类(成员对象 1)析构函数并完成
- 调用 C 类(F 的基础)析构函数并完成
- 调用 A 类(B 的基础,C 的基础)析构函数并完成
- B类(虚拟,C的基础)析构函数被调用并完成
它是否正确?所以基本上到最后C继承了虚拟B,虚拟B继承了A,但是C被破坏了,然后是A,然后是虚拟B?
编辑:C++ 常见问题解答 说:
“虚拟基类是特殊的——它们的析构函数在最派生类的构造函数的末尾被调用”
这是我想要理解的?