Сборка мусора и отсутствие деструкторов
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Деструкторы отсутствуют. Если на объект больше не ссылается ни одна переменная, то занимаемая им память возвращается автоматически Сборщиком мусора, запускаемым в не зависящий от программиста момент. Если мы хотим выполнить какие-то действия, связанные с объектом в момент сборки мусора, следует переопределить виртуальный метод Object.Finalize
type
Person = class
private
name: string;
age: integer;
public
constructor (n: string; a: integer);
begin
name := n; age := a;
end;
procedure Print;
begin
writeln('Имя: ',name,' Возраст: ',age);
end;
procedure Finalize; override;
begin
writeln('Вызывается сборщиком мусора в момент, не зависящий от программиста');
end;
end;
var p,p1: Person;
begin
p := new Person('Иванов',20); // Новый синтаксис вызова конструктора (рекомендуется)
p.Print;
p1 := Person.Create('Попов',19); // Старый синтаксис вызова конструктора (не рекомендуется)
p1.Print;
end.