跳到主要内容

简述子类析构时要调用父类的析构函数吗 ?

参考答案:

是的,当子类的析构函数被调用时,它会首先调用其父类的析构函数。这是因为,在对象的生命周期结束时,需要首先释放由父类分配的资源,然后再释放由子类分配的资源。这就是所谓的析构函数的逆序调用规则。

在C++中,如果你没有显式地在子类中定义析构函数,编译器会自动为你生成一个。这个自动生成的析构函数会调用父类的析构函数。但是,如果你自己定义了子类的析构函数,你需要确保在其中显式地调用父类的析构函数。这通常通过父类名::~父类名()的语法来实现。

例如,假设有一个名为Parent的父类和一个名为Child的子类,那么你可以在Child的析构函数中这样调用Parent的析构函数:

class Parent {
public:
    ~Parent() {
        // 父类的析构函数
    }
};

class Child : public Parent {
public:
    ~Child() {
        // 子类的析构函数
        Parent::~Parent();  // 显式调用父类的析构函数
    }
};

这样,当Child的析构函数被调用时,它首先会调用Parent的析构函数,然后执行自己的析构代码。