MST

星途 面试题库

面试题:C++ 虚析构函数在继承体系中的基础调用顺序问题

假设有一个基类Base和一个派生类Derived,Base类有一个虚析构函数,Derived类继承自Base类且有自己的析构函数。当通过Base类指针删除Derived类对象时,描述一下析构函数的调用顺序,并简单说明为什么会是这样的顺序。
33.9万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 析构函数调用顺序
    • 首先调用Derived类的析构函数。
    • 然后调用Base类的析构函数。
  2. 原因
    • 当通过Base类指针删除Derived类对象时,由于Base类的析构函数是虚函数,根据C++的多态机制,会动态绑定到实际对象类型(即Derived类)的析构函数。先调用Derived类的析构函数是为了清理Derived类中新增的成员变量或资源等。之后,再调用Base类的析构函数,以清理Base类中定义的成员变量或资源,这样能确保整个对象的资源都能被正确释放,保证程序的内存安全和正确性。