У многих есть мнение, что ресурсы, выделенные в потерпевшем крах конструкторе, очень трудно освободить, так как деструктор для объекта с незавершенным конструктором не вызывается, а указатели на уже инициализированные ресурсы теряются, что приводит к утечке памяти и прочим неприятностям.
А что, если использовать не обычные указатели, а "умные" указатели? Например, стандартный std::auto_ptr? Если память для ресурсов организовать с помощью std::auto_ptr, то проблема освобождения ее снимается с плеч разработчика.
Возьмем для примера два класса, Loser и Fixxer. Первый, в полном соответствии с названием, в конструкторе выделяет ресурс (память) и при передаче неподходящего параметра вылетает с исключением. Второй, так же в соответствии со своим названием, пытается выправить ситуацию. Посмотрим, как он с этим справляется.
Читать дальше...

@темы: Исключения