C++回调函数

来源:互联网 发布:sql isexits常数 编辑:程序博客网 时间:2024/04/30 05:11

1. 何为回调(callback)

实现回调函数的时候,就是用一个函数指针保存你待回调的函数的地址。然后满足一定的条件的时候,使用这个函数指针来调用你预设定的函数。


回调函数肯定是要完成一个任务,问题是,该任务并不是马上就要完成,并且,大多数时候,我们并不能确定要做该任务的时间段。只有满足某个条件的时候,回调函数才会被触发。
如果你知道“中断”这个概念,那么“回调”的概念就很好理解了。


2.typedef函数指针

typedef  返回类型  (*新类型)(参数表)

  1. typedef char (*PTRFUN)(int);   
  2. PTRFUN   pFun;   
  3. char glFun(int a)
  4. {
  5.  return;
  6. }   
  7. void main()   
  8. {   
  9.     pFun = glFun;   
  10.    (*pFun)(2);   
  11. }   
typedef的功能是定义新的类型。
          第一句就是定义了一种PTRFUN的类型,并定义这种类型为指向某种函数的指针,这种函数以一个int为参数并返回char类型。后面就可以像使用int,char一样使用PTRFUN了。
           第二行的代码便使用这个新类型定义了变量pFun。

3. 回调函数c++实现


Callback最本质的特征包括两点:注册和触发


C++中如何将类成员函数作为回调函数使用,必须是静态方法吗?

必须是静态成员函数或者全局函数来实现回调函数

大概原因是普通的C++成员函数都隐含了一个传递函数作为参数,即this指针,
C++通过传递this指针给成员函数从而实现函数可以访问C++的数据成员。
由于this指针的原因,使得一个普通成员函数作为回调函数时就会因为隐含的this指针问题使得函数参数个数不匹配,从而导致回调函数编译失败。

0 0
原创粉丝点击