C++ 中回調函數詳解及簡單實例。本站提示廣大學習愛好者:(C++ 中回調函數詳解及簡單實例)文章只能為提供參考,不一定能成為您想要的結果。以下是C++ 中回調函數詳解及簡單實例正文
投稿:lqh
這篇文章主要介紹了C++ 中回調函數詳解及簡單實例的相關資料,需要的朋友可以參考下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(); }
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!