在查看我的一段代码时,我陷入了如下的一条语句。
TMyObjectClass = TMyObject 类;
我有点困惑,不知道这句话是什么意思。
由于 TMyObjectClass
在该语句上方没有声明。
和TMyObject
的声明如下:
TMyObject = 类(TObject)
私有(private)的
//一些私有(private)成员声明
民众
//一些公共(public)变量
结束;
所以,我的问题是这句话的含义是什么
TMyObjectClass = TMyObject 类;
以及TMyObjectClass
如何工作?
我对 Delphi 有点陌生,所以请帮助我了解这些类型的声明和解决方法。
最佳答案
这是一个Class Reference 。
它们用于处理元类。典型的例子是 Delphi 流框架,它使用
TComponentClass = class of TComponent;
这允许动态绑定(bind)到虚拟构造函数。 TComponent
构造函数是虚拟
。流框架需要实例化从 TComponent
派生的类。它这样做是这样的:
var
ComponentClass: TComponentClass;
Component: TComponent;
....
ComponentClass := GetComponentClassSomehowDoesntMatterHow;
Component := ComponentClass.Create(Owner);
现在,因为 TComponent.Create
是虚拟
,所以它以多态方式绑定(bind)。如果TComponentClass
是TButton
,则调用TButton.Create
。如果TComponentClass
是TPanel
,则调用TPanel.Create
。等等。
要认识到的最重要的一点是,所构造的类仅在运行时确定。请注意,许多语言缺乏此功能,尤其是 C++。
关于class - `Class of `类型声明的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24604844/