c++ - 子类的类型

标签 c++ delphi oop

我有一个问题,哪种类型适用于所有具有静态类型和某种 OOP 的语言。

如果我有一个类 A,一个是 A 的子类的类 B,一个是 B 的子类的类 C 和一个类型 A 的变量,我也可以在其中存储 B 和 C 的实例吗?

最佳答案

在 Delphi 中,答案是肯定的。

例如,我创建了一个语法高亮文本编辑器组件。该组件具有属性 FormattingProcessor , 类型为 TFormattingProcessor .现在,我已经创建了几个格式化处理器,例如TXMLFormattingProcessor , TPascalFormattingProcessor , 和 TINIFormattingProcessor ,每个类(class)都是 TFormattingProcessor 的 child .这些中的任何一个都可以分配给 FormattingProcessor文本编辑器组件的属性。

即声明为TFormattingProcessor的变量可以分配一个 TXMLFormattingProcessor 类型的值, TPascalFormattingProcessor , 或 TINIFormattingProcessor ,例如。

如果环顾 VCL,您会发现这种类型的赋值实际上很常见。例如,TLabel组件有一个 FocusControl属性,类型为 TWinControl (如果我没记错的话)。您可以指定 TWinControl 的任何后代此属性,例如一个TEdit . (FocusControl是当标签的加速字符与Alt键一起输入时,将获得键盘焦点的控件。)

关于c++ - 子类的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3651369/

相关文章:

C#: "(subtype)data"和 "data as subtype"类型转换之间有什么区别吗?

javascript - 类型错误:this.functionName 不是一个函数

c++ - 如何通过插件机制在运行时动态加载数据类型

c++ - 模板类静态数据实例化?

c++ - 使用 std map 进行比较的运行时错误

string - 如何在 TVarRec 中设置字符串(或 AnsiString)常量?

php - 在 OOP 设计中传递多个变量的正确方法 (PHP)

c++ - GLSL/C++ 中的白色(可能未着色)OBJ

delphi - dwscript - 任何人都可以帮助编辑器调试器示例吗?

delphi - 加载过程为 TFrame 的后代执行两次