首先,我理解为什么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++ ×1