【问题标题】:What is the difference between Constructor and Class function构造函数和类函数有什么区别
【发布时间】:2015-10-26 08:15:38
【问题描述】:

在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 会隐藏默认构造函数。

不管构造函数创建参数

我有理由使用构造函数吗?

【问题讨论】:

    标签: delphi


    【解决方案1】:

    我有理由使用构造函数吗?

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

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

    在代码的类函数中

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

    您正在调用不带参数的继承构造函数。

    【讨论】:

    • 在我的示例中,类函数 Create 和 Constructor Create 都有相同的工作要做。
    • @Mohamad:是的,但是在你的类函数中,你最终调用了一个构造函数(TPersistent),所以在这两种情况下,构造函数都用于实例化类......
    • @Mohamad 只有构造函数可以实例化一个新实例。
    • @HeartWare,所以在这种情况下,无论 Creator 是如何实现的。我必须使用这种情况来实现 Singleton 类并隐藏默认构造函数。
    • 只有构造函数才能实例化新实例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 2011-10-23
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 2019-02-03
    • 2011-04-16
    相关资源
    最近更新 更多