程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++ 中回調函數詳解及簡單實例

C++ 中回調函數詳解及簡單實例

編輯:關於C++

C++ 中回調函數詳解及簡單實例。本站提示廣大學習愛好者:(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(); 
} 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved