#include <cstdio>
class CBase
{
public :
CBase( )
{
printf ( "CBase::CBase()\n " ) ;
}
virtual ~CBase( )
{
printf ( "CBase::~CBase()\n " ) ;
this- > Destroy( ) ;
}
virtual void Destroy( )
{
printf ( "CBase::Destroy()\n " ) ;
}
} ;
class CChild : public CBase
{
public :
CChild( )
{
printf ( "CChild::CChild()\n " ) ;
}
virtual ~CChild( )
{
printf ( "CChild::~CChild()\n " ) ;
}
virtual void Destroy( )
{
printf ( "CChild::Destroy()\n " ) ;
}
} ;
int main( )
{
printf ( "a\n " ) ;
CChild a;
printf ( "b\n " ) ;
CBase* b = new CChild;
printf ( "delete b\n " ) ;
delete b;
printf ( "delete a\n " ) ;
return 0 ;
}
I2luY2x1ZGUgPGNzdGRpbz4KCmNsYXNzIENCYXNlCnsKcHVibGljOgoJQ0Jhc2UoKQoJewoJCXByaW50ZigiQ0Jhc2U6OkNCYXNlKClcbiIpOwoJfQoJdmlydHVhbCB+Q0Jhc2UoKQoJewoJCXByaW50ZigiQ0Jhc2U6On5DQmFzZSgpXG4iKTsKCQl0aGlzLT5EZXN0cm95KCk7Cgl9Cgl2aXJ0dWFsIHZvaWQgRGVzdHJveSgpCgl7CgkJcHJpbnRmKCJDQmFzZTo6RGVzdHJveSgpXG4iKTsKCX0KfTsKCmNsYXNzIENDaGlsZCA6IHB1YmxpYyBDQmFzZQp7CnB1YmxpYzoKCUNDaGlsZCgpCgl7CgkJcHJpbnRmKCJDQ2hpbGQ6OkNDaGlsZCgpXG4iKTsKCX0KCXZpcnR1YWwgfkNDaGlsZCgpCgl7CgkJcHJpbnRmKCJDQ2hpbGQ6On5DQ2hpbGQoKVxuIik7Cgl9Cgl2aXJ0dWFsIHZvaWQgRGVzdHJveSgpCgl7CgkJcHJpbnRmKCJDQ2hpbGQ6OkRlc3Ryb3koKVxuIik7Cgl9Cn07CgppbnQgbWFpbigpCnsKCXByaW50ZigiYVxuIik7CglDQ2hpbGQgYTsKCXByaW50ZigiYlxuIik7CglDQmFzZSogYiA9IG5ldyBDQ2hpbGQ7CglwcmludGYoImRlbGV0ZSBiXG4iKTsKCWRlbGV0ZSBiOwoJcHJpbnRmKCJkZWxldGUgYVxuIik7CglyZXR1cm4gMDsKfQ==