在执行我的代码之一时,我陷入了如下一条语句。
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有点陌生,所以请帮助我对这些类型的声明和解决方法有所了解。
这是一个类参考。
它们用于处理元类。典型的例子是Delphi流框架,它使用
TComponentClass = class of TComponent;
这允许动态绑定到虚拟构造函数。该TComponent
构造函数virtual
。流框架需要实例化从派生的类TComponent
。它是这样的:
var
ComponentClass: TComponentClass;
Component: TComponent;
....
ComponentClass := GetComponentClassSomehowDoesntMatterHow;
Component := ComponentClass.Create(Owner);
现在,由于TComponent.Create
is virtual
,这是以多态方式绑定的。如果TComponentClass
是TButton
,则TButton.Create
称为。如果TComponentClass
是TPanel
,则TPanel.Create
称为。等等。
要实现的最重要的事情是,仅在运行时确定构造的类。请注意,许多语言都缺乏此功能,尤其是C ++。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句