回調(diào)的簡(jiǎn)易解釋
簡(jiǎn)單來(lái)說(shuō)回調(diào)是一種雙向調(diào)用模式恨课,例如我們是調(diào)用方A羔杨,去調(diào)用被調(diào)方B中的方法x(),處理完成后豁鲤,被調(diào)方會(huì)反過(guò)來(lái)調(diào)用我們傳過(guò)去的函數(shù)y()秽誊,實(shí)現(xiàn)我方在開(kāi)發(fā)中寫(xiě)的y函數(shù)的功能。
回調(diào)的簡(jiǎn)易示例
#include <stdio.h>
void firstCalc(int x);
void secondCalc(int x);
int main()
{
//我方開(kāi)發(fā)視角琳骡,即為用戶(hù)層锅论,執(zhí)行輸入?yún)?shù)等動(dòng)作
CallBack callback;
callback.changeNum(1, 2, firstCalc);
callback.changeNum(1, 2, secondCalc);
return 0;
}
//開(kāi)發(fā)處理層,由我們開(kāi)發(fā)人員來(lái)書(shū)寫(xiě)計(jì)算邏輯
void firstCalc(int result)
{
int otherNum = 10;
printf("result first值為: %d\n", result + otherNum); // 9
}
//開(kāi)發(fā)處理層楣号,由我們開(kāi)發(fā)人員來(lái)書(shū)寫(xiě)計(jì)算邏輯
void secondCalc(int result)
{
int otherNum = 11;
printf("result second值為: %d\n", result - otherNum); // -12
}
以上的代碼一般是由我方開(kāi)發(fā)人員寫(xiě)的最易。
/*實(shí)際開(kāi)發(fā)中,下面這個(gè)類(lèi)可能是被調(diào)方寫(xiě)的邏輯炫狱,會(huì)被封裝起來(lái)藻懒,僅提供接口函數(shù),相當(dāng)于系統(tǒng)底層视译。
我們的目的也許是由此得到底層的某些參數(shù)嬉荆,例如length,或許是由底層檢測(cè)某種事件憎亚,觸發(fā)我們
自己寫(xiě)的函數(shù)员寇,例如系統(tǒng)檢測(cè)到點(diǎn)擊事件,就執(zhí)行我們開(kāi)發(fā)者寫(xiě)的點(diǎn)擊后的函數(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);
}
};
實(shí)際開(kāi)發(fā)中第美,上面這個(gè)類(lèi)可能是被調(diào)方寫(xiě)的邏輯蝶锋,會(huì)被封裝起來(lái),僅提供接口函數(shù)什往,相當(dāng)于系統(tǒng)底層扳缕。
我們的目的也許是由此得到底層的某些參數(shù),例如length别威,或許是由底層檢測(cè)某種事件躯舔,觸發(fā)我們自己寫(xiě)的函數(shù),例如系統(tǒng)檢測(cè)到點(diǎn)擊事件省古,就執(zhí)行我們開(kāi)發(fā)者寫(xiě)的點(diǎn)擊后的函數(shù)邏輯粥庄。這一切即可通過(guò)傳遞函數(shù)指針給底層,讓它把我們需要的東西傳給我們豺妓。
以上惜互。
我的github傳送地址:https://github.com/JunJieDing666