构造函数和类函数之间有什么区别

时间:2015-10-26 08:15:39

标签: delphi

在Delphi中,实例化对象的构造函数和类函数有什么区别?

TPersonnel = class(TPersistent)
public
  class function Create: TPersonnel; overload;
  constructor Create(APersonelID: integer); overload;
end;

class function TPersonnel.Create: TPersonnel;
begin
  result := inherited Create;
end;

constructor TPersonnel.Create(APersonelID: integer);
begin
  inherited Create;
end;

我知道类函数Create会隐藏默认构造函数。

无论构造函数创建参数

我应该使用构造函数吗?

1 个答案:

答案 0 :(得分:6)

  

我应该使用构造函数吗?

简单地说,只有构造函数可以实例化一个新实例。类函数无法创建新实例。

对于产生新实例的类函数,必须最终调用构造函数以实例化新实例。如果您希望编写在创建实例时执行的代码,则应将其放在构造函数中。

在您的代码的类功能

class function TPersonnel.Create: TPersonnel;
begin
  Result := inherited Create;
end;

你正在调用没有参数的继承构造函数。