Гарантии безопасности в C++11 и более поздних версиях делятся на три типа:
Базовая гарантия (Basic Guarantee): Если функция завершается, то программа остается в корректном, но, возможно, неопределенном состоянии. Никаких утечек ресурсов не происходит, но данные могут быть частично изменены. Если функция завершается исключением, то ресурсы, полученные внутри функции до исключения, освобождаются.
Строгая гарантия (Strong Guarantee): Если функция завершается, то ее состояние либо полностью соответствует успешному завершению, либо остается неизменным, как до вызова, если функция завершилась исключением. Это подразумевает отказоустойчивость (rollback).
Гарантия отсутствия исключений (No Except Guarantee): Функция гарантированно не выбрасывает исключений. Может завершиться успешно или аварийно (например, путем std::terminate
), но не через механизм исключений C++.
Примеры:
c
Гарантии безопасности в C++11 и более поздних версиях делятся на три типа:
Базовая гарантия (Basic Guarantee): Если функция завершается, то программа остается в корректном, но, возможно, неопределенном состоянии. Никаких утечек ресурсов не происходит, но данные могут быть частично изменены. Если функция завершается исключением, то ресурсы, полученные внутри функции до исключения, освобождаются.
Строгая гарантия (Strong Guarantee): Если функция завершается, то ее состояние либо полностью соответствует успешному завершению, либо остается неизменным, как до вызова, если функция завершилась исключением. Это подразумевает отказоустойчивость (rollback).
Гарантия отсутствия исключений (No Except Guarantee): Функция гарантированно не выбрасывает исключений. Может завершиться успешно или аварийно (например, путем std::terminate
), но не через механизм исключений C++.
Примеры:
c
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.