Mr. J757 2024-05-10 16:23 采纳率: 0%
浏览 2

不理解输出结果,请帮帮我


#include <iostream>
using namespace std;

class Base {
public:
     ~Base();
};
Base::~Base() {
    cout << "Base destructor" << endl;
}

class Derived : public Base {
public:
    Derived();
    ~Derived();
private:
    int* p;
};

Derived::Derived() {
    p = new int(0);
}

Derived::~Derived() {
    cout << "Derived destructor" << endl;
    delete p;
}

void fun(Base* b) {
    delete b; //只执行基类析构
}

int main() {
    Base* b = new Derived();
    fun(b);
    Base b1 = Derived();
    return 0;
}

img


输出结果最后为什么两个Base destructor

  • 写回答

2条回答 默认 最新

  • 专家-皆知 2024-05-10 16:23
    关注

    确保基类析构函数被正确调用,使用virtual关键字。

    以上回复有部分引自免费微信小程序:皆我百晓生。 如问题尚未解决,还请稍待,如有疑问请回复进一步沟通。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月10日