Здравствуйте, Аноним, Вы писали:
А>Произошел сбой. Забросили исключение. Перехватили его. И тут вопрос, нужно ли этот непроинициализировавшийся объект удалять: delete something; ?
Если брошено исключение, то для всех переменных которые уже были сконструированы будут вызваны деструкторы
class A
{
std::string a;
std::auto_ptr<int> b;
public:
A()
: a("")
, b(new int)
{
throw std::exception();
// будут вызваны деструкторы для a и для b
}
~A()
{
// деструктор никогда не будет вызыван, поскольку конструктор никогда не завершит работу
}
};
int main()
{
try
{
std::string bb;
A a;
}
catch(std::exception&)
{
// будет вызыван деструктор для bb
}
}