Cтраница 1
Деструктор объекта вызывает функцию Close, которая принудительно записывает в файл любые несохраненные данные, ассоциированные с объектом CFile, что может вызвать исключение. Если архив создавался динамически ( с использованием оператора new), то после закрытия файла необходимо освободить память. [1]
Идентификатор не обозначает деструктор объекта. [2]
Метод Destroy вызывает деструктор объекта, что приводит к разрушению объекта и освобождению занимаемой им памяти. Однако, не следует вызывать в приложении метод Destroy непосредственно. [3]
Здесь происходит следующее: деструктор объекта, на который указывает РPoint, выполняется как вызов обычного правила. [4]
Файлы закрываются, когда выполняются деструкторы объектов классов if stream, ofstream или fstream, а это происходит, когда объекты потоков выходят из области действия или перед завершением выполнения программы; но, все же, хорошим стилем программирования является закрытие всех файлов явным образом с помощью функции close, когда уже нет потребности в этих файлах. [5]
Напишите программу на C, которая показывает, что все деструкторы объектов, созданных в блоке, вызываются прежде, чем в этом блоке генерируется исключение. [6]
![]() |
Демонстрация последовательности, в которой вызываются конструктор и деструктор. [7] |
Программа на рис. 6.9 показывает последовательность, в которой вызываются конструкторы и деструкторы объектов типа CreateAndDestroy в нескольких областях действия. Программа объявляет объект first в глобальной области действия. Его конструктор вызывается, как только программа начинает выполнение, а его деструктор вызывается по завершении программы, после того, как все другие объекты уничтожены. [8]
При разрушении временного объекта, которое происходит при возврате из функции, вызывается деструктор объекта. Если объект возвращается функцией как значение, копия этого объекта должна быть сначала создана, а затем разрушена. [9]
ЕСЛИ разблокировать выражения вывода на экран в конструкторах и деструкторе класса Animal ( см. листинг 19.5), то обнаружится, что конструктор и деструктор объектов Animal вызываются значительно чаще, чем ожидалось. [10]
Для удаления объекта, реализующего описанный деструктор, надо программно вызвать метод Free. Если вы этого не сделали, а сборщик мусора удалил объект, так как число ссылок на него стало равно нулю, деструктор объекта так и не будет вызван. [11]
Если вы забудете установить квадратные скобки, то из памяти будет удален только первый объект массива. Если уже были внесены изменения в строку 21, как указывалось выше, то при выполнении программы на экране отобразится вызов только одного деструктора объекта, который удалит первый объект массива. [12]
![]() |
Определение класса Circle ( часть 3 из 5.| Определения функций элементов класса Circle ( часть 4 из 5. [13] |
В части 5 представлена программа драйвер для иерархии Point - Circle. Программа начинается созданием объекта класса Point со своей собственной областью определения внутри main. Управление входит и сразу выходит из области определения этого объекта, так что вызываются и конструктор, и деструктор объекта. Затем программа создает объект circlel класса Circle. Это активизирует конструктор класса Point, осуществляющий вывод значений, переданных ему из конструктора класса Circle, затем выполняется вывод, указанный в конструкторе класса Circle. Следующим возникает объект circle2 класса Circle. Снова вызываются конструкторы классов Point и Circle. Отметим, что тело конструктора Point выполняется раньше тела конструктора Circle. Деструкторы вызываются в последовательности, обратной вызовам соответствующих им конструкторов. [14]
![]() |
Демонстрация последовательности, в которой вызываются конструктор и деструктор. [15] |