您的位置:首页 > 编程语言 > C语言/C++

C++回调函数

2014-09-22 23:31 295 查看
1. 何为回调(callback)

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

回调函数肯定是要完成一个任务,问题是,该任务并不是马上就要完成,并且,大多数时候,我们并不能确定要做该任务的时间段。只有满足某个条件的时候,回调函数才会被触发。

如果你知道“中断”这个概念,那么“回调”的概念就很好理解了。

2.typedef函数指针

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

typedef char (*PTRFUN)(int);

PTRFUN pFun;

char glFun(int a)

{

return;

}

void main()

{

pFun = glFun;

(*pFun)(2);

}

typedef的功能是定义新的类型。
第一句就是定义了一种PTRFUN的类型,并定义这种类型为指向某种函数的指针,这种函数以一个int为参数并返回char类型。后面就可以像使用int,char一样使用PTRFUN了。

第二行的代码便使用这个新类型定义了变量pFun。

3. 回调函数c++实现

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


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

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

大概原因是普通的C++成员函数都隐含了一个传递函数作为参数,即this指针,
C++通过传递this指针给成员函数从而实现函数可以访问C++的数据成员。
由于this指针的原因,使得一个普通成员函数作为回调函数时就会因为隐含的this指针问题使得函数参数个数不匹配,从而导致回调函数编译失败。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: