DELPHI 类引用

谈到Delphi类引用在<<delphi技术手册>>上说到:  
  对象是用来存放一个类的各个字段值的内存块  
  对象引用就是指向这个对象的指针  
  而类表用来存放一些指向VMT的只读指针和相关的信息  
  类引用就是指向这个类表的指针

它的定义形式如下:

  1. TClass = class of type;
  2. //例如
  3. TClass = class of TObject;

TObject的类类型如下:

  1. function TObject.ClassType: TClass;
  2. begin
  3.     Pointer(Result) := PPointer(Self)^;
  4. end;

PPointer(self)^应该等于 Pointer(Pointer(self)^),Self是指向一个对象的实例,

一个对象的前4个字节是一个指向VMT表的指针,也就是说PPointer(self)^是指向虚拟方法表(VMT)的指针。

PS:在普通方法中Self表示类的实例,在类方法中Self表示类本身。

相关文章
相关标签/搜索