MST

星途 面试题库

面试题:C++派生类销毁时虚基类析构执行顺序基础考察

假设有一个虚基类A,以及从A派生的类B和C,最后有一个类D同时继承自B和C。请简述在D类对象销毁时,虚基类A的析构函数执行顺序,并说明原因。
35.1万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 执行顺序
    • 当D类对象销毁时,虚基类A的析构函数最先执行,然后执行B和C的析构函数,最后执行D的析构函数。
  2. 原因
    • 在多继承且存在虚基类的情况下,虚基类是由最底层的派生类(这里是D类)负责初始化和销毁的。这样设计是为了避免在多重继承体系中,虚基类被多次初始化和销毁,保证虚基类在整个继承体系中只有一份实例。所以在销毁对象时,先销毁虚基类A,再按照继承顺序依次销毁B、C和D自身的成员。