#include <iostream>
struct SomeNonTrivialType {
SomeNonTrivialType() { std::cout << "SomeNonTrivialType()" << std::endl; }
~SomeNonTrivialType() { std::cout << "~SomeNonTrivialType()" << std::endl; }
};
class A {
private:
// деструктор пустой, нахуй он нужен? ;)
// virtual ~A() {}
int a;
};
class B : public A {
private:
SomeNonTrivialType b;
};
int main() {
A *a = new B;
delete a;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IFNvbWVOb25Ucml2aWFsVHlwZSB7CiAgICBTb21lTm9uVHJpdmlhbFR5cGUoKSB7IHN0ZDo6Y291dCA8PCAiU29tZU5vblRyaXZpYWxUeXBlKCkiIDw8IHN0ZDo6ZW5kbDsgfQogICAgflNvbWVOb25Ucml2aWFsVHlwZSgpIHsgc3RkOjpjb3V0IDw8ICJ+U29tZU5vblRyaXZpYWxUeXBlKCkiIDw8IHN0ZDo6ZW5kbDsgfQp9OwoKY2xhc3MgQSB7CnByaXZhdGU6CiAgICAvLyDQtNC10YHRgtGA0YPQutGC0L7RgCDQv9GD0YHRgtC+0LksINC90LDRhdGD0Lkg0L7QvSDQvdGD0LbQtdC9PyA7KQogICAgLy8gdmlydHVhbCB+QSgpIHt9CiAgICBpbnQgYTsKfTsKCmNsYXNzIEIgOiBwdWJsaWMgQSB7CnByaXZhdGU6CiAgICBTb21lTm9uVHJpdmlhbFR5cGUgYjsKfTsKCmludCBtYWluKCkgewogICAgQSAqYSA9IG5ldyBCOwogICAgZGVsZXRlIGE7CiAgICByZXR1cm4gMDsKfQ==