回调的简易解释
简单来说回调是一种双向调用模式,例如我们是调用方A,去调用被调方B中的方法x(),处理完成后,被调方会反过来调用我们传过去的函数y(),实现我方在开发中写的y函数的功能。
回调的简易示例
#include <stdio.h>
void firstCalc(int x);
void secondCalc(int x);
int main()
{
//我方开发视角,即为用户层,执行输入参数等动作
CallBack callback;
callback.changeNum(1, 2, firstCalc);
callback.changeNum(1, 2, secondCalc);
return 0;
}
//开发处理层,由我们开发人员来书写计算逻辑
void firstCalc(int result)
{
int otherNum = 10;
printf("result first值为: %d\n", result + otherNum); // 9
}
//开发处理层,由我们开发人员来书写计算逻辑
void secondCalc(int result)
{
int otherNum = 11;
printf("result second值为: %d\n", result - otherNum); // -12
}
以上的代码一般是由我方开发人员写的。
/*实际开发中,下面这个类可能是被调方写的逻辑,会被封装起来,仅提供接口函数,相当于系统底层。
我们的目的也许是由此得到底层的某些参数,例如length,或许是由底层检测某种事件,触发我们
自己写的函数,例如系统检测到点击事件,就执行我们开发者写的点击后的函数逻辑*/
#include <stdio.h>
typedef void (*NumCalc)(int ); // 定义函数指针
int changeNum(int x, int y, NumCalc fp);
class CallBack
{
public:
double length;
int changeNum(int incNum, int decNum, NumCalc fp)
{
fp(incNum - decNum);
}
};
实际开发中,上面这个类可能是被调方写的逻辑,会被封装起来,仅提供接口函数,相当于系统底层。
我们的目的也许是由此得到底层的某些参数,例如length,或许是由底层检测某种事件,触发我们自己写的函数,例如系统检测到点击事件,就执行我们开发者写的点击后的函数逻辑。这一切即可通过传递函数指针给底层,让它把我们需要的东西传给我们。
以上。
我的github传送地址:https://github.com/JunJieDing666