有很多方法可以声明新的类类型:


TMyClass1 = TObject;
TMyClass2 = type TObject;
TMyClass3 = class end;
TMyClass4 = class(TObject);
TMyClass5 = class(TObject) end;


据我了解,第3、4和5类是TObject的后代,但尚不清楚1和2有何不同,以及3,4和5之间有何不同。

有什么区别吗?

最佳答案

TMyClass1只是别名-TObject的另一个名称
TMyClass2TObject的强类型别名(我们称它们为“类型类型”);虽然在类中使用它是非常不寻常的,但是通常情况下,例如Pointer创建句柄类型或其他内容(例如,参见Windows.pas中的用法)。
TMyClass3是一个类,隐式地从TObject派生,没有新成员。
TMyClass4是一个类,使用简洁的语法从TObject显式派生,没有新成员。通常,这用于标记类,其中标记类本身的唯一性很有趣-通常用于Exception后代
TMyClass5是一个类,显式地从TObject派生,没有新成员。声明中的TObject是多余的,但使其明确无害。

10-08 05:19