#include <iostream>
using namespace std;
class C{
int* cp;
public:
C(){ cp = new int;}
virtual ~C(){
delete cp;
cout << "~C()" << endl;
}
virtual void someMethod()=0;
};
class B: public C{
int* bp;
public:
B(){ bp = new int;}
virtual ~B(){
delete bp;
cout << "~B()" << endl;
}
virtual void someMethod(){//some Implementation
}
};
class A: public B{
public:
virtual ~A(){
cout << "~A()" << endl;
}
};
int main(){
C *c = new A;
delete c;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQ3sKCWludCogY3A7CglwdWJsaWM6CgkKCUMoKXsgY3AgPSBuZXcgaW50O30gCgkKCXZpcnR1YWwgfkMoKXsKCQlkZWxldGUgY3A7CgkJY291dCA8PCAifkMoKSIgPDwgZW5kbDsKCX0KCQoJdmlydHVhbCB2b2lkIHNvbWVNZXRob2QoKT0wOwp9OwoKY2xhc3MgQjogcHVibGljIEN7CglpbnQqIGJwOwoJcHVibGljOgoJCglCKCl7IGJwID0gbmV3IGludDt9IAoJCgl2aXJ0dWFsIH5CKCl7CgkJZGVsZXRlIGJwOwoJCWNvdXQgPDwgIn5CKCkiIDw8IGVuZGw7Cgl9CgkKCXZpcnR1YWwgdm9pZCBzb21lTWV0aG9kKCl7Ly9zb21lIEltcGxlbWVudGF0aW9uCgl9Cn07CgpjbGFzcyBBOiBwdWJsaWMgQnsKCXB1YmxpYzoKCXZpcnR1YWwgfkEoKXsKCQljb3V0IDw8ICJ+QSgpIiA8PCBlbmRsOwoJfQp9OwoKCgppbnQgbWFpbigpewogIEMgKmMgPSBuZXcgQTsKICBkZWxldGUgYzsKICByZXR1cm4gMDsKfQ==