以下の例で~D()
、すべてのデストラクタ、、、が呼び出されるのはなぜ~C()
ですか?~B()
~A()
仮想デストラクタは、の1つだけですA
。
コードは次のとおりです。
#include<iostream>
using namespace std;
class A
{
public:
virtual ~A()
{
cout<<"destruct A\n";
}
};
class B:public A
{
public:
~B()
{
cout<<"destruct B\n";
}
};
class C:public B
{
public:
~C()
{
cout<<"destruct C\n";
}
};
class D:public C
{
public:
~D()
{
cout<<"destruct D\n";
}
};
int main()
{
A* ptr = new D();
delete ptr;
return 0;
}