ектирования или небрежного про

Автор admin Воскресенье, 3 мая 2009 11:32

ектирования или небрежного программирования. Зачистка Одно из преимуществ обработки исключений состоит в том, что нормальный ход программы прерывается, и управление сразу передается в соответствующий обработчик исключений. Но эта передача принесет пользу только в том случае, если в момент запуска исключения будет проведена необходимая деинициализация. Механизм обработки исключений С++ гарантирует, что при выходе из области видимости для всех объектов этой области, конструкторы которых завершены, будут вызваны деструкторы. Следующий пример убеждает в том, что для объектов с незавершенными конструкторами деструкторы не вызываются. Кроме того, он показывает, что происходит при запуске исключения в процессе создания массива объектов: //: C01:Cleanup.cpp // При запуске исключения уничтожаются только готовые объекты #iinclude using namespace std: class Trace { static int counter; int objid: public: TraceO { objid = counter++: cout « “constructing Trace #” « objid « endl: if(objid == 3) throw 3: } -TraceO { cout « “destructing Trace #” « objid « endl: } }: int Trace::counter = 0; int mainO { try { T


Комментарии закрыты.