6.5.5 Конструктор и деструктор класса

На верх  Назад  Вперёд

Могут быть созданы как конструктор так и деструктор класса. Они служат для создания экземпляра класса, некоторые переменные или свойства которого, должны быть инициализированы до того, как класс будет использован. Конструктор вызываются автоматически при запуске программы. Конструктор класса вызывается до секции initialization (инициализации) модуля, деструктор класса вызывается после секции finalization (финализации) этого модуля.

При использовании конструктора и деструктора класса нужно соблюдать некоторые меры предосторожности:

Конструктор должен быть назван Create, и не может иметь никаких параметров.

Деструктор должен быть назван Destroy, и не может иметь никаких параметров.

Ни конструктор, ни деструктор класса не может быть виртуальным.

Конструктор и деструктор класса вызывается независимо от использования класса: даже если класс никогда не используется, конструктор и деструктор всё равно вызывается.

Порядок вызова конструкторов или деструкторов классов не гарантируется. Для вложенных классов единственным гарантированием порядка является то, что конструкторы вложенных классов вызываются после вызова конструктора класса, содержащего их, для деструкторов используется обратный порядок (они вызываются до этого деструктора).

Рассмотрим пример программы:

{$mode objfpc}

{$h+}

 

Type

TA = Class(TObject)

Private

  Function GetA : Integer;

  Procedure SetA(AValue : integer);

public

  Class Constructor create;

  Class Destructor destroy;

  Property A : Integer Read GetA Write SetA;

end;

 

{Class} Function TA.GetA : Integer;

begin

Result:=-1;

end;

 

{Class} Procedure TA.SetA(AValue : integer);

begin

//

end;

 

Class Constructor TA.Create;

begin

Writeln('Class constructor TA');

end;

 

Class Destructor TA.Destroy;

begin

Writeln('Class destructor TA');

end;

 

Var

A : TA;

begin

end.

Программа выведет следущее:

Class constructor TA

Class destructor TA