нструктора, завершившегося пре
Автор admin Понедельник, 4 мая 2009 11:32
нструктора, завершившегося прежде возникновения исключения, в процессе раскрутки стека будет вызван соответствующий деструктор. Шаблон PWrap демонстрирует более типичное применение исключений: в нем определяется вложенный класс RangeError1, который используется в операторной функции operator[] при выходе аргумента из интервала допустимых значений. Поскольку функция operator^] возвращает ссылку, она не может вернуть ноль (нулевых ссылок не существует). Такая ситуация действительно является исключительной — в текущем контексте нельзя решить, что делать дальше, и возвращать недостоверное значение тоже нельзя. В приведенном примере используется простейший класс исключения RangeError. Предполагается, что вся необходимая информация содержится в имени класса, хотя при необходимости в него можно включить переменную со значением индекса. На этот раз результат выглядит так: CatO CatO CatO PWrap constructor allocating a Dog -CatO -CatO -CatO PWrap destructor inside handler И снова при выделении памяти для Dog происходит исключение. Однако на этот раз массив объектов Cat уничтожается так, как положено, и утечки пам
Комментарии закрыты.
Последние комментарии