相关疑难解决方法(0)

虚拟析构函数和删除具有多重继承的对象...它是如何工作的?

首先,我理解为什么virtual在单继承和通过基指针删除对象方面需要析构函数.这是专门关于多重继承和背后的原因,为什么这个工程.这个问题出现在我的一个大学课程中,没有人(包括教授)确定为什么这有效:

#include <iostream>

struct A
{
    virtual ~A()
    {
        std::cout << "~A" << std::endl;
    }
    int memberA;
};

struct B
{
    virtual ~B()
    {
        std::cout << "~B" << std::endl;
    }
    int memberB;
};

struct AB : public A, public B
{
    virtual ~AB()
    {
        std::cout << "~AB" << std::endl;
    }
};

int main()
{
    AB* ab1 = new AB();
    AB* ab2 = new AB();

    A* a = ab1;
    B* b = ab2;

    delete a;
    delete b; …
Run Code Online (Sandbox Code Playgroud)

c++

19
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×1