#include <iostream>
struct Exception{
};
class MyClass{
private:
int variable;
public:
MyClass(){
std::cout<<"Contructor has been called"<<std::endl;
throw Exception();
}
~MyClass(){
std::cout<<"Destructor has been called"<<std::endl;
}
void operator delete(void* object){
std::cout<<"My delete was called"<<std::endl;
}
};
int main(void)
try
{
MyClass* arr = new MyClass();
std::cout<<"Did destruction happened before here?"<<std::endl;
delete arr;
return 0;
}
catch(...) {
throw;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEV4Y2VwdGlvbnsKCn07CgpjbGFzcyBNeUNsYXNzewoKCXByaXZhdGU6CgoJCWludCB2YXJpYWJsZTsKCglwdWJsaWM6CgoJCU15Q2xhc3MoKXsKCQkJc3RkOjpjb3V0PDwiQ29udHJ1Y3RvciBoYXMgYmVlbiBjYWxsZWQiPDxzdGQ6OmVuZGw7CgkJCXRocm93IEV4Y2VwdGlvbigpOwoJCX0KCgkJfk15Q2xhc3MoKXsKCQkJc3RkOjpjb3V0PDwiRGVzdHJ1Y3RvciBoYXMgYmVlbiBjYWxsZWQiPDxzdGQ6OmVuZGw7CgkJfQoKCQl2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBvYmplY3QpewoJCQlzdGQ6OmNvdXQ8PCJNeSBkZWxldGUgd2FzIGNhbGxlZCI8PHN0ZDo6ZW5kbDsKCQl9CgoKfTsKCmludCBtYWluKHZvaWQpCnRyeQp7CgoJTXlDbGFzcyogYXJyID0gbmV3IE15Q2xhc3MoKTsgCgoJc3RkOjpjb3V0PDwiRGlkIGRlc3RydWN0aW9uIGhhcHBlbmVkIGJlZm9yZSBoZXJlPyI8PHN0ZDo6ZW5kbDsKCglkZWxldGUgYXJyOwoKCiAgICByZXR1cm4gMDsKCn0KY2F0Y2goLi4uKSB7Cgl0aHJvdzsKfQ==