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

A B*_*A B 5 delphi class 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有点新意,所以请帮助我了解这些类型的声明和解决方法.

Dav*_*nan 14

这是一个类引用.

它们用于处理元类.规范的例子是使用的Delphi流式框架

TComponentClass = class of TComponent;
Run Code Online (Sandbox Code Playgroud)

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

var
  ComponentClass: TComponentClass;
  Component: TComponent;
....
ComponentClass := GetComponentClassSomehowDoesntMatterHow;
Component := ComponentClass.Create(Owner);
Run Code Online (Sandbox Code Playgroud)

现在,因为TComponent.Createvirtual,这是以多态方式绑定的.如果TComponentClassTButton,则TButton.Create调用.如果TComponentClassTPanel,则TPanel.Create调用.等等.

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