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();
}
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!