Dispose(S,Done);

Деструктор об’єкту, на який вказує S, виконується як звичайний метод. Однак, як тільки остання дія буде виконана, деструктор почне шукати розмір екземпляра вказаного типу у VMT і передасть його розмір процедурі Dispose. Процедура Disposeзавершує процес шляхом видалення правильного числа байтів області динамічної пам’яті, яка відносилася до S^. Число звільнюваних байтів буде правильним незалежно від того, чи вказує S на екземпляр батьківського (TStudent) чи дочірнього (TStudent1) типу. Тому деструктор рекомендується робити віртуальним навіть якщо ніяких віртуальних методів об’єкт не містить.

Виклик деструктора поза процедурою Dispose не приведе до автоматичного вивільнення пам’яті.

Необхідно відмітити, що сам по собі метод деструктора може бути порожнім і виконувати лише функцію зв’язку з процедурою Dispose

 

Destructor TStudent.Done;

Begin

End;

 

оскільки основна інформація міститься не в тілі деструктора, а зв’язана з його заголовком, що містить слово Destructor

Деструктор дочірнього типу TStudent1 теж теж повинен останньою дією викликати відповідний деструктор свого безпосереднього предка, щоб звільнити поля всіх успадкованих вказівників об’єкту

 

Destructor TStudent1.Done;

Begin








Дата добавления: 2015-08-26; просмотров: 547;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.