ClassType函数的问题,帮我啊!!!!!!!!!!!!!!!!!!!(50分)

  • 主题发起人 主题发起人 cjtmh
  • 开始时间 开始时间
C

cjtmh

Unregistered / Unconfirmed
GUEST, unregistred user!
function TObject.ClassType: TClass;
begin
Pointer(Result) := PPointer(Self)^;
end;
这段代码中,我有很多问题,像Pointer(Result)这段代码算不算是类型强制转换?如果算的话,能否有人给我讲讲Pointer(Result) := PPointer(Self)^;什么意思。
我的理解是:Result本身就是一个指针,却还要将它转换为Pointer类型为什么?还有PPointer是指向指针的指针,那么PPointer(Self)^我就更不懂了
希望大家讲讲,如果这个我弄懂了,以后看东西会容易一些。谢谢喽
 
PPointer(Self)^;
TObject.ClassType 是对象级别的方法,Self 的值是指向对象内存空间的指针,对象内存空间的前 4 个字节是类的 VMTptr。因此这个函数的返回值就是类的 VMTptr。
可以看下 http://blog.bcchinese.net/FreeWind/
 
那么属不属于类型强制转换?
 
那么result是类引用,是否是Pointer(Result)转化为一个无类型指针,可以接受PPointer(Self)^的数据?
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部