Шрифт:
ПОПРОБУЙТЕ
Добавьте блоки
19.5.2. Получение ресурсов — это инициализация
К счастью, нам не обязательно копировать инструкции
Рассмотрим предыдущий пример. Как только мы выйдем из функции
Это универсальное правило: когда поток управления покидает область видимости, вызываются деструкторы для каждого полностью созданного объекта и активизированного подобъекта. Объект считается полностью созданным, если его конструктор закончил свою работу. Исследование всех следствий, вытекающих из этих двух утверждений, может вызвать головную боль. Будем считать просто, что конструкторы и деструкторы вызываются, когда надо и где надо.
19.5.3. Гарантии
Что делать, если вектор невозможно ограничить только одной областью (или подобластью) видимости? Рассмотрим пример.
Это довольно распространенный пример: мы вызываем функцию, чтобы создать сложную структуру данных, и возвращаем эту структуру как результат. Однако, если при заполнении вектора возникнет исключение, функция
Для того чтобы сгенерировать исключение, мы можем добавить блок
Это простой и эффективный способ обработки ошибок, который можно применять систематически.
• Базовая гарантия. Цель кода