#include <iostream>
class Test {
public:
int a;
char* b;
Test(Test&);
Test();
};
Test::Test(Test& other) : a(other.a)
{
try {
if (!other.b) throw std::exception();
b = new char(*other.b);
}
catch (...) {
b = new char('d');
}
}
Test::Test() : a(7), b(new char('c')) {}
int main()
{
Test a;
Test b(a);
std::cout << (*b.b) << std::endl;
delete a.b;
*a.b = NULL;
Test c(a);
std::cout << (*c.b) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgVGVzdCB7CnB1YmxpYzoKCWludCBhOwoJY2hhciogYjsKCVRlc3QoVGVzdCYpOwoJVGVzdCgpOwp9OwoKVGVzdDo6VGVzdChUZXN0JiBvdGhlcikgOiBhKG90aGVyLmEpCnsKCXRyeSB7CgkJaWYgKCFvdGhlci5iKSB0aHJvdyBzdGQ6OmV4Y2VwdGlvbigpOyAKCQliID0gbmV3IGNoYXIoKm90aGVyLmIpOwoJfQoJY2F0Y2ggKC4uLikgewoJCWIgPSBuZXcgY2hhcignZCcpOwoJfQp9CgpUZXN0OjpUZXN0KCkgOiBhKDcpLCBiKG5ldyBjaGFyKCdjJykpIHt9CgppbnQgbWFpbigpCnsKCVRlc3QgYTsKCVRlc3QgYihhKTsKCQoJc3RkOjpjb3V0IDw8ICgqYi5iKSA8PCBzdGQ6OmVuZGw7CglkZWxldGUgYS5iOwoJKmEuYiA9IE5VTEw7CgkKCVRlc3QgYyhhKTsKCXN0ZDo6Y291dCA8PCAoKmMuYikgPDwgc3RkOjplbmRsOwoJCglyZXR1cm4gMDsKfQ==