回調的簡易解釋
簡單來說回調是一種雙向調用模式,例如我們是調用方A,去調用被調方B中的方法x(),處理完成后,被調方會反過來調用我們傳過去的函數(shù)y(),實現(xiàn)我方在開發(fā)中寫的y函數(shù)的功能。
回調的簡易示例
#include <stdio.h>
void firstCalc(int x);
void secondCalc(int x);
int main()
{
//我方開發(fā)視角,即為用戶層,執(zhí)行輸入?yún)?shù)等動作
CallBack callback;
callback.changeNum(1, 2, firstCalc);
callback.changeNum(1, 2, secondCalc);
return 0;
}
//開發(fā)處理層,由我們開發(fā)人員來書寫計算邏輯
void firstCalc(int result)
{
int otherNum = 10;
printf("result first值為: %d\n", result + otherNum); // 9
}
//開發(fā)處理層,由我們開發(fā)人員來書寫計算邏輯
void secondCalc(int result)
{
int otherNum = 11;
printf("result second值為: %d\n", result - otherNum); // -12
}
以上的代碼一般是由我方開發(fā)人員寫的。
/*實際開發(fā)中,下面這個類可能是被調方寫的邏輯,會被封裝起來,僅提供接口函數(shù),相當于系統(tǒng)底層。
我們的目的也許是由此得到底層的某些參數(shù),例如length,或許是由底層檢測某種事件,觸發(fā)我們
自己寫的函數(shù),例如系統(tǒng)檢測到點擊事件,就執(zhí)行我們開發(fā)者寫的點擊后的函數(shù)邏輯*/
#include <stdio.h>
typedef void (*NumCalc)(int ); // 定義函數(shù)指針
int changeNum(int x, int y, NumCalc fp);
class CallBack
{
public:
double length;
int changeNum(int incNum, int decNum, NumCalc fp)
{
fp(incNum - decNum);
}
};
實際開發(fā)中,上面這個類可能是被調方寫的邏輯,會被封裝起來,僅提供接口函數(shù),相當于系統(tǒng)底層。
我們的目的也許是由此得到底層的某些參數(shù),例如length,或許是由底層檢測某種事件,觸發(fā)我們自己寫的函數(shù),例如系統(tǒng)檢測到點擊事件,就執(zhí)行我們開發(fā)者寫的點擊后的函數(shù)邏輯。這一切即可通過傳遞函數(shù)指針給底層,讓它把我們需要的東西傳給我們。
以上。
我的github傳送地址:https://github.com/JunJieDing666