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