回调函数

回调函数注意几个点:

中间函数:calc函数

回调函数:add_calc函数minus_calc函数

起始函数:main函数

回调函数通常和应用处于同一抽象层(因为传入什么样的回调函数是在应用级别决定的)。而回调就成了一个高层调用底层,底层再回过头来调用高层的过程。

C++回调函数5个要点: 

1、定义函数指针

2、定义回调函数

3、注册(传入)回调函数

4、调用者(中间函数)使用函数指针,调用回调函数

5、main函数调用中间函数

#include <cstdio>
using std::cout;
using std::endl;

typedef int(*callback)(int,int); //定义函数指针

//回调函数1
int add_calc(int a, int b)
{
    return a+b;
}

//回调函数2
int minus_calc(int a, int b)
{
    return a-b;
}

//calc又叫做中间函数
int calc(int a,int b,callback Func) //calc是中间函数,callback Func是为了传入回调函数
{
    return Func(a,b);  //4、调用者用函数指针调用回调函数
}

int main()
{
    //传入不同的回调函数,会有不同的行为
    cout << calc(4,2,add_calc) << endl; //中间函数
    //cout << calc(4,2,minus_calc) <<endl;
    return 0;
}

回调有两种:阻塞式回调和延迟式回调

阻塞式回调

阻塞式回调里,回调函数的调用一定发生在起始函数返回之前。

延迟式回调

而延迟式回调里,回调函数的调用有可能是在起始函数返回之后。

延迟式回调,最典型的例子是createThread(threadFuntion),这里threadFuntion是callback函数,createThread是中间函数。如果起始函数想等待线程完毕,就是用join函数。

为什么需要回调函数?

回调机制提供了非常大的灵活性。程序可以在运行时,通过登记不同的回调函数,来决定、改变中间函数的行为。这就比简单的函数调用要灵活太多了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值