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;