Очередное откровенное знание о C++ спешу изложить :)
Короткий ответ на вопрос в сабже, очевидно: ДА.
Теперь на секунду задумайтесь, как это возможно...
Подумали? Я лично ничего придумать не смог. Но все гениальное, как известно, просто:
А теперь задумайтесь: стоит ли вообще перехватывать подобные исключения и если перехватили, что с ними делать?
Для этого сначала полезно ответить на вопросы:
Короткий ответ на вопрос в сабже, очевидно: ДА.
Теперь на секунду задумайтесь, как это возможно...
Подумали? Я лично ничего придумать не смог. Но все гениальное, как известно, просто:
class C : private A {
private:
B b;
public:
C::C()
try
: A (...),
b(...)
{
}
catch(...) {
...
}
};
А теперь задумайтесь: стоит ли вообще перехватывать подобные исключения и если перехватили, что с ними делать?
Для этого сначала полезно ответить на вопросы:
- Что такое время жизни объекта?
- Можно ли считать объект "живым" внутри конструктора/деструктора?
- Можно ли считать, что объект хоть сколько-то просуществовал, если в конструкторе было сгенерировано исключение?
Комментариев нет:
Отправить комментарий