#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEEgeyB2aXJ0dWFsIH5BKCkgeyBzdGQ6OmNvdXQgPDwgIn5BKClcbiI7IH0gfTsKc3RydWN0IEIgOiBwdWJsaWMgQSB7IHZpcnR1YWwgfkIoKSB7IHN0ZDo6Y291dCA8PCAifkIoKVxuIjsgfSB9OyAvLyB2aXJ0dWFsIG5pY2h0IG7DtnRpZywgYWJlciBzY2jDtm5lci4KCmludCBtYWluKCkKewogIEIqIGIgPSBuZXcgQjsKICBkZWxldGUgYjsKICBBKiBhID0gbmV3IEI7CiAgZGVsZXRlIGE7Cn0=