这是vcl源码,请大家指点指点这里的Self是什么意思?(50分)

  • 主题发起人 主题发起人 fengxiaoxiao
  • 开始时间 开始时间
F

fengxiaoxiao

Unregistered / Unconfirmed
GUEST, unregistred user!
function TControl.Perform(Msg: Cardinal; WParam, LParam: Longint): Longint;
var
Message: TMessage;
begin
Message.Msg := Msg;
Message.WParam := WParam;
Message.LParam := LParam;
Message.Result := 0;
if Self <> nil then WindowProc(Message); //这里的Self是什么意思?
Result := Message.Result;
end;
这是vcl源码,请大家指点指点这里的Self是什么意思?
 
Self=TControl
 
一个粗略的解释:
Self相当于C++里的This指针。
指代的就是类自己。
 
在Delphi中,Self可能有两个意思:
1.对象实例指针。即指向对象在堆中申请的空间的首地址。一般情况下都是这个指针。
2.对象类型指针。即指向对象在数据区中保存的虚拟方法表地址。在class function中的Self就是这种情况。

你的情况属于第一种。

顺便说一句:对象实例的头四个字节保存着对象类型指针
 
多人接受答案了。
 
后退
顶部