У меня есть сомнения, что я не могу решить. Я прочитал документацию на embarcadero для конструкторов классов, но я не могу понять смысл этого. Другими словами, какова разница в использовании между constructor
и a class constructor
? Я сделал это:
type
TGeneric<T> = class
private
FValue: T;
aboutString: string;
procedure setValue(const a: T);
public
property V: T read FValue write setValue;
property about: string read aboutString;
constructor Create;
destructor Destroy; override;
end;
implementation
{ TGeneric<T> }
constructor TGeneric<T>.Create;
begin
inherited;
aboutString := 'test';
end;
Вместо этого этот код работает неправильно:
type
TGeneric<T> = class
private
FValue: T;
aboutString: string;
procedure setValue(const a: T);
public
property V: T read FValue write setValue;
property about: string read aboutString;
class constructor Create;
destructor Destroy; override;
end;
implementation
{ TGeneric<T> }
class constructor TGeneric<T>.Create;
begin
inherited;
aboutString := 'test';
end;
Я думаю, что ответ указан в этой строке документации:
Обычно конструкторы классов используются для инициализации статических полей класса или выполнить тип инициализации, который требуется перед тем, как класс или любой экземпляр класса могут нормально функционировать.
Скажите, если я прав:
- Конструктор: я могу использовать
inherited Create;
, инициализировать переменные и т.д. - Конструктор классов: я могу использовать это, когда мне нужно немедленно создать объект в моем классе?
Например, посмотрите ниже:
type
TBox = class
private
class var FList: TList<Integer>;
class constructor Create;
end;
implementation
class constructor TBox.Create;
begin
{ Initialize the static FList member }
FList := TList<Integer>.Create();
end;
end.
Здесь я собираюсь создать объект сразу, когда я вызываю TBox.Create
в основной форме?