以下の例で~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;
}