亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++中回調函數(CallBack)的用法分析

2020-01-26 15:10:55
字體:
來源:轉載
供稿:網友

本文實例分析了C++中回調函數(CallBack)的用法。分享給大家供大家參考。具體分析如下:

如果試圖直接使用C++的成員函數作為回調函數將發生錯誤,甚至編譯就不能通過。
其錯誤是普通的C++成員函數都隱含了一個傳遞函數作為參數,亦即“this”指針,C++通過傳遞this指針給其成員函數從而實現程序函數可以訪問C++的數據成員。這也可以理解為什么C++類的多個實例可以共享成員函數卻-有不同的數據成員。由于this指針的作用,使得將一個CALL-BACK型的成員函數作為回調函數安裝時就會因為隱含的this指針使得函數參數個數不匹配,從而導致回調函數安裝失敗。要解決這一問題的關鍵就是不讓this指針起作用,通過采用以下兩種典型技術可以解決在C++中使用回調函數所遇到的問題。這種方法具有通用性,適合于任何C++。
  
1).   不使用成員函數,為了訪問類的成員變量,可以使用友元操作符(friend),在C++中將該函數說明為類的友元即可。

2).   使用靜態成員函數,靜態成員函數不使用this指針作為隱含參數,這樣就可以作為回調函數了。靜態成員函數具有兩大特點:其一,可以在沒有類實例的情況下使用;其二,只能訪問靜態成員變量和靜態成員函數,不能訪問非靜態成員變量和非靜態成員函數。由于在C++中使用類成員函數作為回調函數的目的就是為了訪問所有的成員變量和成員函數,如果做不到這一點將不具有實際意義。解決的辦法也很簡單,就是使用一個靜態類指針作為類成員,通過在類創建時初始化該靜態指針,如pThis=this,然后在回調函數中通過該靜態指針就可以訪問所有成員變量和成員函數了。

這種處理辦法適用于只有一個類實例的情況,因為多個類實例將共享靜態類成員和靜態成員函數,這就導致靜態指針指向最后創建的類實例。為了避免這種情況,可以使用回調函數的一個參數來傳遞this指針,從而實現數據成員共享。這種方法稍稍麻煩,這里就不再贅述。
例子:

復制代碼 代碼如下:
#include "stdafx.h" 
#include <iostream> 
#include <assert.h> 
using namespace std; 
 
class Test 

public: 
    friend void callBackFun(void){ cout << "CallBack Function!";} //因為callBackFun默認有一個const Test* 的指針 
}; 
 
typedef void (*FPtr)(void); 
void Fun(FPtr ptr) 

    ptr(); 

int main(void) 

    Fun(callBackFun);  
 
    return 0; 
}

希望本文所述對大家的C++程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美高清videos高潮hd| 国产91精品网站| 久久伊人精品天天| 亚洲毛片在线观看| 亚洲国产精久久久久久久| 九九热精品视频国产| 欧美高清视频免费观看| 亚洲少妇激情视频| 亚洲黄在线观看| 亚洲欧美一区二区三区四区| 亚洲国产精彩中文乱码av在线播放| 久久中国妇女中文字幕| 国产精品网红福利| 中文字幕亚洲欧美日韩2019| 国产69久久精品成人看| 在线观看日韩视频| 亚洲第一综合天堂另类专| 国产免费成人av| 欧美孕妇孕交黑巨大网站| 欧美精品福利在线| 日韩在线视频网| 国色天香2019中文字幕在线观看| 亚洲国产日韩欧美在线图片| 欧美日韩中国免费专区在线看| 91高清视频在线免费观看| 日韩欧美在线视频| 久久久久久久香蕉网| 57pao成人永久免费视频| 精品国产依人香蕉在线精品| 精品视频在线播放色网色视频| 中文字幕欧美亚洲| 狠狠躁夜夜躁久久躁别揉| 精品香蕉在线观看视频一| 亚洲欧美日韩精品久久| 国产精品1区2区在线观看| 亚洲福利视频免费观看| 欧美激情一区二区久久久| 精品久久久久久国产| 成人午夜小视频| 亚洲男人第一网站| 97av在线播放| 伊人久久久久久久久久久| 亚洲精品在线视频| 精品女同一区二区三区在线播放| 久久国产精品影片| 欧美精品日韩三级| 精品一区二区三区电影| 成人免费xxxxx在线观看| 欧美成人在线免费视频| 欧美成人免费在线观看| 亚洲性av网站| 欧美不卡视频一区发布| 日韩精品视频免费在线观看| 欧美成人免费一级人片100| 久久精品久久精品亚洲人| 国产欧美精品xxxx另类| 精品国产依人香蕉在线精品| 成人av.网址在线网站| 欧美精品在线极品| 在线播放亚洲激情| 国产啪精品视频网站| 日本久久亚洲电影| 亚洲成人黄色在线观看| 精品国产鲁一鲁一区二区张丽| 久久亚洲影音av资源网| 欧美精品福利在线| 热久久视久久精品18亚洲精品| 国产精品吊钟奶在线| 亚洲国产美女精品久久久久∴| 日韩中文字幕网址| 国产精品午夜视频| 91久久久久久久久久久久久| 国产精品高潮在线| 色综合久久悠悠| 懂色av中文一区二区三区天美| 色婷婷av一区二区三区久久| 中文字幕av一区中文字幕天堂| 在线电影欧美日韩一区二区私密| 国产精品色婷婷视频| 欧美激情国产精品| 国产99久久久欧美黑人| 97在线精品国自产拍中文| 欧美精品第一页在线播放| 在线免费观看羞羞视频一区二区| 国产精品视频一区二区高潮| 97精品国产97久久久久久春色| 久久成人综合视频| 91精品久久久久久久久青青| 欧美性极品xxxx娇小| 亚洲福利视频免费观看| 亚洲美女av在线播放| 亚洲国产成人精品久久久国产成人一区| 亚洲精品国产suv| 久久精品精品电影网| 欧美日韩国产一中文字不卡| 国产成人精品视频在线| 国产小视频国产精品| 久久久久久91香蕉国产| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲性生活视频| 久久精品99久久香蕉国产色戒| 日韩有码在线播放| 国产成人高清激情视频在线观看| 国产精品在线看| 最近的2019中文字幕免费一页| 国产精品看片资源| 精品国产91久久久| 国产精品美女主播| 97国产精品视频| 亚洲女人初尝黑人巨大| 在线色欧美三级视频| 俺去啦;欧美日韩| 97国产精品视频| 在线播放国产一区中文字幕剧情欧美| 国产一区二区三区丝袜| 国产香蕉一区二区三区在线视频| 一本大道亚洲视频| 成人欧美一区二区三区在线湿哒哒| 国产精品久久久久久久久久久新郎| 亚洲精品自在久久| 国产精品久久久久av| 国模精品系列视频| 中文字幕亚洲无线码在线一区| 日韩精品在线观| 一区二区三区精品99久久| 亚洲欧美在线x视频| 伊人久久久久久久久久久久久| 欧美亚洲午夜视频在线观看| 国产精品久久久久久久7电影| 国产精品一区二区久久久| 欧美一级高清免费| 日韩免费在线电影| 国产精品久久久久99| 亚洲自拍中文字幕| 精品偷拍一区二区三区在线看| 国产高清视频一区三区| 日韩在线观看成人| 国产香蕉97碰碰久久人人| 亚洲综合在线中文字幕| 欧美日韩在线免费观看| 亚洲一区亚洲二区| 精品福利在线看| 欧美丝袜美女中出在线| 一区二区福利视频| 欧美天天综合色影久久精品| 中文字幕日韩视频| 日韩中文字幕精品视频| 亚洲国产一区二区三区在线观看| 日韩av在线网| 日韩精品中文字幕在线播放| 欧美理论在线观看| 欧美日韩成人精品| 欧美日韩国产在线看| 久久九九国产精品怡红院| 中文字幕精品视频| 日韩成人激情视频| 国产成人精品免高潮在线观看| 永久555www成人免费| 疯狂做受xxxx高潮欧美日本| 欧美精品激情在线| 欧美黑人性猛交| 亚洲91精品在线观看| 亚洲一区二区三区四区在线播放| 国产999精品|