class - `Class of `类型声明的含义是什么?

标签 class delphi c++builder delphi-xe

在查看我的一段代码时,我陷入了如下的一条语句。

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)。如果TComponentClassTButton,则调用TButton.Create。如果TComponentClassTPanel,则调用TPanel.Create。等等。

要认识到的最重要的一点是,所构造的类仅在运行时确定。请注意,许多语言缺乏此功能,尤其是 C++。

关于class - `Class of `类型声明的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24604844/

相关文章:

ruby-on-rails - 使用符号输入调用类方法

python - 为什么类的主体在定义时执行?

delphi - 我可以修改RTL类System.Classes.TStream中的常量并在Delphi XE6运行时重建它吗?

delphi - 如何在我的应用程序中显示关系?

c++ - 如何在 C++ builder 中渲染 openGL 帧?

python - 处理具有作为参数给定的大量属性的对象的正确/Pythonic 方法

java - 在整个应用程序中检查互联网连接的最佳方式

delphi - 如何在使用 for-in 循环迭代时更新 TList?

delphi - 如何查看编译后的Delphi代码?

c++ - 如何混合 std::stream 和 Delphi TStream?