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.Create
是virtual
,这是以多态方式绑定的.如果TComponentClass
是TButton
,则TButton.Create
调用.如果TComponentClass
是TPanel
,则TPanel.Create
调用.等等.
要实现的最重要的事情是构造的类仅在运行时确定.请注意,许多语言都缺乏此功能,尤其是C++.