`class of type声明是什么意思?

时间:2014-07-07 07:10:48

标签: class delphi c++builder delphi-xe

在浏览我的一个代码时,我被困在一个声明中,如下所示。

TMyObjectClass = class of TMyObject;

我有点困惑,想知道这句话是什么意思。 由于TMyObjectClass在声明之上没有声明。

TMyObject声明如下:

TMyObject = class(TObject) private //some private member declaration Public // some public variables end;

所以,我的问题是声明的含义是什么  TMyObjectClass = class of TMyObject;

以及TMyObjectClass如何运作?

我对Delphi有点新意,所以请帮助我了解这些类型的声明以及解决方法。

1 个答案:

答案 0 :(得分:14)

这是Class Reference

它们用于处理元类。规范示例是使用

的Delphi流式框架
TComponentClass = class of TComponent;

这允许动态绑定到虚拟构造函数。 TComponent构造函数为virtual。流式传输框架需要实例化从TComponent派生的类。它是这样的:

var
  ComponentClass: TComponentClass;
  Component: TComponent;
....
ComponentClass := GetComponentClassSomehowDoesntMatterHow;
Component := ComponentClass.Create(Owner);

现在,因为TComponent.Createvirtual,所以它以多态方式绑定。如果TComponentClassTButton,则会调用TButton.Create。如果TComponentClassTPanel,则会调用TPanel.Create。等等。

要实现的最重要的事情是构造的类仅在运行时确定。请注意,许多语言都缺乏此功能,尤其是C ++。