#include <iostream>
using namespace std;
struct A{
A(){
std::cout << "new A\n";
}
~A(){
std::cout << "delete A\n";
}
};
class B{
A *a;
public:
B(): a(new A){
//Нормальный конструктор
}
B(int i): a(new A){
//Конструктор с исключенеим
throw i;
}
~B(){
delete a;
}
};
int main() {
B b1; //Все хорошо
try{
B b2(42); //Детруктор не вызван
}catch(...){
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEF7CglBKCl7CgkJc3RkOjpjb3V0IDw8ICJuZXcgQVxuIjsKCX0KCX5BKCl7CgkJc3RkOjpjb3V0IDw8ICJkZWxldGUgQVxuIjsKCX0KfTsKCmNsYXNzIEJ7CglBICphOwpwdWJsaWM6CglCKCk6IGEobmV3IEEpewoJCS8v0J3QvtGA0LzQsNC70YzQvdGL0Lkg0LrQvtC90YHRgtGA0YPQutGC0L7RgAoJfQoJQihpbnQgaSk6IGEobmV3IEEpewoJCS8v0JrQvtC90YHRgtGA0YPQutGC0L7RgCDRgSDQuNGB0LrQu9GO0YfQtdC90LXQuNC8CgkJdGhyb3cgaTsKCX0KCQoJfkIoKXsKCQlkZWxldGUgYTsKCX0KfTsKCmludCBtYWluKCkgewoJQiBiMTsgLy/QktGB0LUg0YXQvtGA0L7RiNC+Cgl0cnl7CgkJQiBiMig0Mik7IC8v0JTQtdGC0YDRg9C60YLQvtGAINC90LUg0LLRi9C30LLQsNC9Cgl9Y2F0Y2goLi4uKXsKCQkKCX0KCXJldHVybiAwOwp9