通过c++示例解释回调

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35034604/article/details/83543601

回调的简易解释

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

猜你喜欢

转载自blog.csdn.net/qq_35034604/article/details/83543601