欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

通过c++示例解释回调

程序员文章站 2022-06-07 10:14:06
...

回调的简易解释

简单来说回调是一种双向调用模式,例如我们是调用方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

相关标签: 回调