Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2341507
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:06:34

区别在与回调函数是作为另一个函数的参数的函数,事件是一个类的成员。

//下面定义两个函数
void a(int x);
void b(void(*c)(int));

//一般来讲,如果一个函数作为另一个函数的参数传递,作为参数的函数就是回调函数。
void m(void)
{
  b(a); //把 a 当作回调函数
}

//事件都是作为类的一个成员
class t
{
public:
  void (__closure *e)(int);       //e 是这个类的事件, __closure 为定义一个指向类的成员函数的指针
  void x(void) { if(e) { e(0); }} //在类里面实现调用函数 x 会产生这个事件 e, 如果使用者为这个事件定义了处理函数, 就调用
  t() { e=NULL; }                 //类的构造函数, 在的初始状态认为事件 e 未被使用者实现
};

class u
{
public:
  t t1;                           //成员变量 t1 为 t 类的一个对象
  void te(int i);                 //定义一个成员函数 te
  u() { t1.e = te; }              //对象 t1 的事件 e 用 te 函数处理
};

--------------------next---------------------

阅读(1068) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~