#include <iostream>

struct A { virtual ~A() { std::cout << "~A()\n"; } };
struct B : public A { virtual ~B() { std::cout << "~B()\n"; } }; // virtual nicht nötig, aber schöner.

int main()
{
  B* b = new B;
  delete b;
  A* a = new B;
  delete a;
}