您好,登錄后才能下訂單哦!
C++ 中回調函數詳解及簡單實例
回調函數調用關系圖
對于第一種情況,主程序可以從執行到回調函數,也可以不執行回調函數,關鍵看宿主函數是否調用了回調函數。
對于第二種情況,主程序可以從執行到回調函數,也可以不執行回調函數,關鍵看宿主函數是否調用了回調函數。主程序不知道宿主函數什么時候調用回調函數,因為調用函數啟動了線程,這樣,主程序就不必關心宿主函數什么時候調用回調函數了,主程序可以釋放出來做自己的事了。
代碼示例
#include <stdio.h> typedef void(*lpFunc)(void *, char *); // 函數指針 // 回調函數的宿主函數,在這里回調用函數被使用, void GetCallBack(void * lpVoid, lpFunc callback) { callback(lpVoid, "test"); } class A{ public: A(){}; void outName(char szAlarm[]){ printf("my name is %s /n", szAlarm); } // 被宿主調用的回調函數 static void fCallback(void *lpVoid, char szAlarm[]){ A * p = (A*)(lpVoid); p->outName(szAlarm); } //調用外部宿主函數,當Test函數調用過宿主函數以后,Test就再也不關心宿主函數 //什么時候調用回調函數了,因為那時宿主函數自己的事了 void Test(){ GetCallBack(this, fCallback); } }; int main(void) { A a; a.Test(); }
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。