谈到Delphi类引用在<<delphi技术手册>>上说到:
对象是用来存放一个类的各个字段值的内存块
对象引用就是指向这个对象的指针
而类表用来存放一些指向VMT的只读指针和相关的信息
类引用就是指向这个类表的指针
它的定义形式如下:
- TClass = class of type;
- //例如
- TClass = class of TObject;
TObject的类类型如下:
- function TObject.ClassType: TClass;
- begin
- Pointer(Result) := PPointer(Self)^;
- end;
PPointer(self)^应该等于 Pointer(Pointer(self)^),Self是指向一个对象的实例,
一个对象的前4个字节是一个指向VMT表的指针,也就是说PPointer(self)^是指向虚拟方法表(VMT)的指针。
PS:在普通方法中Self表示类的实例,在类方法中Self表示类本身。