【问题标题】:what is the meaning of `Class of ` type declaration?`Class of` 类型声明是什么意思?
【发布时间】:2014-08-27 14:18:32
【问题描述】:

在浏览我的一个代码时,我被困在一个语句上,如下所示。

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 有点陌生,所以请帮助我了解这些类型的声明以及解决方法。

【问题讨论】:

  • 你可以阅读这个主题here

标签: class delphi c++builder delphi-xe


【解决方案1】:

这是Class Reference

它们用于处理元类。典型的例子是使用

的 Delphi 流式传输框架
TComponentClass = class of TComponent;

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

var
  ComponentClass: TComponentClass;
  Component: TComponent;
....
ComponentClass := GetComponentClassSomehowDoesntMatterHow;
Component := ComponentClass.Create(Owner);

现在,因为TComponent.Createvirtual,所以它以多态方式绑定。如果TComponentClassTButton,则调用TButton.Create。如果TComponentClassTPanel,则调用TPanel.Create。以此类推。

要意识到的最重要的事情是,所构造的类仅在运行时确定。请注意,许多语言都缺乏这种能力,尤其是 C++。

【讨论】:

    猜你喜欢
    • 2022-01-02
    • 2011-12-19
    • 2017-01-09
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 2022-12-05
    相关资源
    最近更新 更多