C ++ обладает очень мощным механизмом защиты от исключений.Деструкторы запускаются для всех переменных, которые выходят из области видимости из-за исключения.Это отличается от языков, таких как Java, где безопасность исключений требует, чтобы программист правильно понял предложения catch
и finally
.
Поведение вызывающих деструкторов в C ++ работает без проблем с объектами Qt в стеке.Все классы Qt имеют деструкторы и ни один не требует ручной очистки.Кроме того, QSharedPointer<T>
может использоваться для управления объектами Qt, выделенными в куче;когда последний указатель выходит из области видимости, объект уничтожается.Это включает в себя случай, когда указатель выходит из области видимости из-за исключения.
Итак, безопасность исключений, безусловно, присутствует в Qt.Это просто прозрачно.