一个概念性问题:procedure of object 什么意思?(50分)

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

forss

Unregistered / Unconfirmed
GUEST, unregistred user!
最好顺带讲讲用法..:)
谢谢..[:D]
 
属于类的过程,跟一般的过程用法一样。
搜索一下,老早就回答过一大堆了:(
 
beta:
无啊。。。我在离线数据里搜索过了。。可能我没找到啊。。
。能告诉我一下么?多谢。。
 
一个方法指针,像c中的指向函数的指针
 
“procedure of object 什么意思? ”
procedure of object 是类过程(类函数),用法如下:
1、与普通函数相同点:可以像一般的函数和过程一样在类的实例里作为对象方法调用;
2、与普通函数不同点:可以不通过对象,而是通过类来直接调用。
也就是说,一般函数和过程必须通过类的实例(对象)来调用,而类过程(类函数)则
可以不必通过该类的实例来调用。通过类来调用函数或者过程,可以定义和实现一些不
能或者不适合作为某一特定对象行为的方法。
可以参考一下Java编程思想里关于Static方法的论述。很透彻。
 
这样的声名主要用于事件处理。
例:
type
TNotifyEvent = procedure(Sender: TObject) of object;
 
首先:
procedure 也是类型
可以理解为过程类型,定义过程的参数结构,而具体的实现可以动态赋值
像onclick那样
例子:
声明
onclick= procedure(Sender: TObject,a :integer) of object;
以后你就可以把TNotifyEvent作为过程用了,而不用考虑它实现什么功能,你想onclik里
用户写了什么,都是一样的
if assign(onclick) then
onclick;
这样只要TNotifyEvent可以执行,程序就去执行它,控件就是这样实现事件的

 
procedure 指针占4个字节,保存在过程的地址
procedure of object占8个字节,保存过程的地址和类的地址


 
WolfXP:
如果是要不需要通过类实例就可以调用的话。用class procedure 才和java
里的static类似。。procedure of object的用处应该是像小黄鱼讲的那样吧。。
 
同意 forss,不通过实例的是 class procedure 类方法
而 procedure of object 只是属于类的方法,需要实例的
 
接受答案了.
 
后退
顶部