Создание и удаление объекта
Для объявления классов и объектов FPC поддерживает конструкторы (constructors) и деструкторы (destructors). Программист ответственен за вызов конструктора и деструктора явно при использовании объектов.
Пара конструктор/деструктор требуется, если объект использует виртуальные методы. В объявлении объектного типа простой идентификатор должен быть использован для именования конструктора и деструктора. Необходимо квалифицировано выбрать их имена, т.е. в форме objectidentifier.methodidentifier. FPC поддерживает также расширенный синтаксис для процедур New и Dispose. В случае динамической переменной объектного типа имя конструктора помещается в операцию вызова New. New реализуется как функция, которая возвращает указатель на создаваемый объект. Рассмотрим следующие объявления:
Объект – экземпляр класса. Для работы с объектом необходимо:
- В разделе типов объявить класс, если он не стандартный.
- В разделе переменных объявить имя объекта. Должно быть уникальным. Оно будет содержать начальный адрес блока памяти, выделяемой под объект в ДП.
- Создать объект методом constructor (конструктор). Его имя – create.
- Выполнить над объектом действия.
- Удалить далее ненужный объект методом destructor (деструктор). Его имя – free или destroy.
Методы constructor и destructor отличаются от других методов специальными заголовками. Заголовки предписывают компилятору выполнить для этих методов дополнительные “закулисные” операции. Заголовки включаются в члены класса, а их реализация помещается в разделах методов. Большинство классов имеют один конструктор с именем create (Создать) и два деструктора с именами destroy и free. Рекомендуется использовать деструктор free, так как он сначала проверяет существование объекта, а затем вызывает деструктор destroy. При создании класса-потомка конструктор и деструктор переопределяются только тогда, когда они отличаются от этих методов класса-предка.
program SozdanObject;
{$mode objfpc}{$H+}
uses
Classes, SysUtils; // Ссылка на модули
type
MyClass=TObject; // Создан объектный класс
var
MyObject:MyClass; // Определен объект
begin
MyObject:=MyClass.Create; // Создан объект
{Работа с объектом}
MyObject.Free; // Удален объект
end.































