在查看我的代码之一时,我陷入了如下的一项声明。
TMyObjectClass = class of TMyObject;
我有点困惑,想知道这句话的含义是什么。
作为TMyObjectClass
声明之上没有任何声明。
and TMyObject
声明如下:
TMyObject = class(TObject)
private
//some private member declaration
Public
// some public variables
end;
所以,我的问题是该声明的含义是什么TMyObjectClass = class of TMyObject;
and How TMyObjectClass
works?
我对 Delphi 有点陌生,所以请帮助我了解这些类型的声明和解决方法。
这是一个类参考 http://docwiki.embarcadero.com/RADStudio/en/Class_References.
它们用于处理元类。典型的例子是 Delphi 流框架,它使用
TComponentClass = class of TComponent;
这允许动态绑定到虚拟构造函数。这TComponent
构造函数是virtual
。流框架需要实例化派生类TComponent
。它这样做是这样的:
var
ComponentClass: TComponentClass;
Component: TComponent;
....
ComponentClass := GetComponentClassSomehowDoesntMatterHow;
Component := ComponentClass.Create(Owner);
现在,因为TComponent.Create
is virtual
,这是以多态方式绑定的。如果TComponentClass
is TButton
, then TButton.Create
叫做。如果TComponentClass
is TPanel
, then TPanel.Create
叫做。等等。
最重要的是要认识到,所构造的类仅在运行时确定。请注意,许多语言缺乏此功能,尤其是 C++。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)