#include <iostream>
struct SomeNonTrivialType {
SomeNonTrivialType() { std::cout << "SomeNonTrivialType()" << std::endl; }
~SomeNonTrivialType() { std::cout << "~SomeNonTrivialType()" << std::endl; }
};
class A {
public:
virtual ~A() {}
private:
int a;
};
class B : public A {
private:
SomeNonTrivialType b;
};
int main() {
A *a = new B;
delete a;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IFNvbWVOb25Ucml2aWFsVHlwZSB7CiAgICBTb21lTm9uVHJpdmlhbFR5cGUoKSB7IHN0ZDo6Y291dCA8PCAiU29tZU5vblRyaXZpYWxUeXBlKCkiIDw8IHN0ZDo6ZW5kbDsgfQogICAgflNvbWVOb25Ucml2aWFsVHlwZSgpIHsgc3RkOjpjb3V0IDw8ICJ+U29tZU5vblRyaXZpYWxUeXBlKCkiIDw8IHN0ZDo6ZW5kbDsgfQp9OwoKY2xhc3MgQSB7CnB1YmxpYzoKICAgIHZpcnR1YWwgfkEoKSB7fQpwcml2YXRlOgogICAgaW50IGE7Cn07CgpjbGFzcyBCIDogcHVibGljIEEgewpwcml2YXRlOgogICAgU29tZU5vblRyaXZpYWxUeXBlIGI7Cn07CgppbnQgbWFpbigpIHsKICAgIEEgKmEgPSBuZXcgQjsKICAgIGRlbGV0ZSBhOwogICAgcmV0dXJuIDA7Cn0=