Delphi函數指針的兩種定義

 

delphi中經常見到以下兩種定義

 

Type

         TMouseProc = procedure (X,Y:integer);

         TMouseEvent = procedure (X,Y:integer) of Object;

 

兩者樣子差不多但實際意義卻不一樣,

TMouseProc只是單一的函數指針類型;

TMouseEvent是對象的函數指針,也就是對象/類的函數/方法

區別在於類方法存在一個隱藏參數self,也就是說兩者形參不一樣,所以不能相互轉換

這也就是爲什麼delphi中可以這樣賦值 button1.onClick:=button2.onClick;

卻不能這樣賦值 button1.οnclick=buttonclick; (buttonclick爲本地函數,button2.onclick爲類方法)

的原因!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章