Обработка исключений и уничтожение объектов в C++
Исключением называется нежелательная ошибка, возникающая во время выполнения программы. Практика отделения вызывающей аномалии программы/кода от остальной части программы/кода известна как обработка исключений.
Объект называется экземпляром класса, который имеет то же имя, что и класс. Деструктор — это функция-член класса с тем же именем, что и у класса, но с предшествующим знаком «~» (тильда), а также она автоматически вызывается после исчерпания объема кода. Практика распыления или сноса существующей объектной памяти называется уничтожением объекта .
Другими словами, класс программы никогда не содержит какой-либо памяти или хранилища, это объект, который содержит память или хранилище, и для освобождения/уничтожения памяти созданного объекта мы используем деструкторы.
Например :
Выход:
Constructing an object of class Test Destructing the object of class Test Caught 10
Когда возникает исключение, деструкторы объектов (чья область действия заканчивается блоком try) автоматически вызываются перед выполнением блока catch. Вот почему вышеприведенная программа печатает « Уничтожение объекта теста » перед « Поймать 10 ».
Что происходит, когда исключение выбрасывается из конструктора?
Пример:
Выход :
Constructing an Object of class Test1 Constructing an Object of class Test2 Destructing an Object the class Test1 Caught 20
Деструкторы вызываются только для полностью построенных объектов. Когда конструктор объекта выдает исключение, деструктор для этого объекта не вызывается.
Предскажите вывод следующей программы:
Выход :
Constructing object number 1 Constructing object number 2 Constructing object number 3 Constructing object number 4 Destructing object number 3 Destructing object number 2 Destructing object number 1 Caught 4