водного типа.) По этой причине
Автор admin
Воскресенье, 3 мая 2009 11:32
водного типа.) По этой причине, а также чтобы предотвратить создание лишней копии объекта исключения, всегда лучше перехватывать исключения по ссылке, а не по значению1. При запуске указателя обработчик ищется по стандартным правилам преобразования указателей. Тем не менее, в процессе поиска автоматические преобразования одного типа исключения к другому типу не выполняются. Пример: //: С01:Autoexcp.cpp // Отсутствие преобразований при поиске обработчика #include using namespace std; class Exceptl {}; class Except2 { public: Except2(const Exceptl&) {} }: void f() { throw ExceptK); } int mainO { try { f(): } catch (Except2&) { cout « “inside catch(Except2)” « endl; } catch (Exceptl&) { cout « “inside catch(Exceptl)” « endl; } } ///:- Хотя на первый взгляд может показаться, что первый обработчик может быть выбран в результате преобразования объекта Exceptl в Except2 с использованием преобразующего конструктора, при обработке исключений система не выполняет такие преобразования, и в итоге будет выбран обработчик Exceptl. Следующий пример показывает, как обработчик исключений базового класса перех
Комментарии закрыты.
Последние комментарии