在C++中,虚析构函数是指在基类中声明为虚函数的析构函数。虚析构函数允许在通过基类指针或引用删除派生类对象时,正确地调用派生类的析构函数,以确保正确释放派生类对象所占用的资源。这在面向对象设计中经常会遇到,特别是当基类指针指向派生类对象,并且希望在删除这个指针时调用派生类的析构函数时,就会需要使用虚析构函数。
使用虚析构函数是为了在通过基类指针删除派生类对象时,确保能够正确调用派生类的析构函数,从而释放派生类对象所占用的资源,保证多态性的正确行为。
#include <iostream>
class Base {
public:
virtual ~Base() {
std::cout << "Base destructor called" << std::endl;
}
};
class Derived : public Base {
public:
virtual ~Derived() {
std::cout << "Derived destructor called" << std::endl;
}
};
int main(){
Base* ptr = new Derived();
delete ptr; // 这里会调用 Derived 的析构函数,因为 Base 的析构函数是虚函数
return 0;
}