C++继承基类析构函数

C++ Inheriting base Class Destructor

本文关键字:析构函数 基类 继承 C++      更新时间:2023-10-16

我正在开发一个游戏,其中我有一个从父GameObject类继承的派生玩家类,我想完成的是在派生类析构函数内部调用基类析构函数,我能做到吗?

示例:

// Base Class
class A
{
    public:
        // other code goes here...
        ~A();
    protected:
        int a;
}
// ...
// ...
// Base Class Destructor
A::~A()
{
    // sets a back to 0
    a = 0;
}
// Derived Class
class B : public A
{
    public:
        // other code goes here...
        ~B();
}
// Derived Class Methods
B::~B()
{
    // Calls for Base Class Destructor, How can i accomplish this
    A::~A();
}

父类的析构函数会被自动调用。析构函数的调用顺序与构造函数的调用顺序相反;因此,在派生类的析构函数中依赖父类的字段是可以的。

您最好将析构函数声明为virtual。若通过基类指针删除派生类的对象,则需要确定正确的析构函数。

尝试在析构函数中添加跟踪输出,以确保析构函数的调用顺序。