最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中回調(diào)函數(shù)(CallBack)的用法分析

 更新時(shí)間:2015年01月12日 14:57:19   投稿:shichen2014  
這篇文章主要介紹了C++中回調(diào)函數(shù)(CallBack)的用法,較為詳細(xì)的分析了C++中回調(diào)函數(shù)(CallBack)的原理并以實(shí)例形式總結(jié)了其具體用法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

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

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

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

這種處理辦法適用于只有一個(gè)類實(shí)例的情況,因?yàn)槎鄠€(gè)類實(shí)例將共享靜態(tài)類成員和靜態(tài)成員函數(shù),這就導(dǎo)致靜態(tài)指針指向最后創(chuàng)建的類實(shí)例。為了避免這種情況,可以使用回調(diào)函數(shù)的一個(gè)參數(shù)來傳遞this指針,從而實(shí)現(xiàn)數(shù)據(jù)成員共享。這種方法稍稍麻煩,這里就不再贅述。
例子:

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

public: 
    friend void callBackFun(void){ cout << "CallBack Function!";} //因?yàn)閏allBackFun默認(rèn)有一個(gè)const Test* 的指針 
}; 
 
typedef void (*FPtr)(void); 
void Fun(FPtr ptr) 

    ptr(); 

int main(void) 

    Fun(callBackFun);  
 
    return 0; 
}

希望本文所述對(duì)大家的C++程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C/C++實(shí)現(xiàn)監(jiān)控目錄文件變化

    C/C++實(shí)現(xiàn)監(jiān)控目錄文件變化

    ReadDirectoryChangesW是Windows操作系統(tǒng)提供的一個(gè)函數(shù),用于監(jiān)視目錄的變化,本文主要為大家介紹了如何使用ReadDirectoryChangesW實(shí)現(xiàn)監(jiān)控目錄文件變化,需要的可以參考下
    2023-11-11
  • C/C++開發(fā)中extern的一些使用注意事項(xiàng)

    C/C++開發(fā)中extern的一些使用注意事項(xiàng)

    這篇文章主要為大家介紹了C/C++開發(fā)中extern一些使用注意事項(xiàng)的事例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • C語(yǔ)言函數(shù)超詳細(xì)講解上篇

    C語(yǔ)言函數(shù)超詳細(xì)講解上篇

    函數(shù)是一組一起執(zhí)行一個(gè)任務(wù)的語(yǔ)句。每個(gè)?C?程序都至少有一個(gè)函數(shù),即主函數(shù)?main()?,所有簡(jiǎn)單的程序都可以定義其他額外的函數(shù),函數(shù)我們分兩篇來講解,接下來開始第一篇
    2022-04-04
  • C++ throw關(guān)鍵字實(shí)現(xiàn)拋出異常和異常規(guī)范

    C++ throw關(guān)鍵字實(shí)現(xiàn)拋出異常和異常規(guī)范

    本文主要介紹了C++ throw關(guān)鍵字實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C語(yǔ)言實(shí)例真題講解數(shù)據(jù)結(jié)構(gòu)中單向環(huán)形鏈表

    C語(yǔ)言實(shí)例真題講解數(shù)據(jù)結(jié)構(gòu)中單向環(huán)形鏈表

    鏈表可以說是一種最為基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)了,而單向鏈表更是基礎(chǔ)中的基礎(chǔ)。鏈表是由一組元素以特定的順序組合或鏈接在一起的,不同元素之間在邏輯上相鄰,但是在物理上并不一定相鄰。在維護(hù)一組數(shù)據(jù)集合時(shí),就可以使用鏈表,這一點(diǎn)和數(shù)組很相似
    2022-04-04
  • C++中sort函數(shù)的基礎(chǔ)入門使用教程

    C++中sort函數(shù)的基礎(chǔ)入門使用教程

    這篇文章主要給大家介紹了關(guān)于C++中sort函數(shù)的基礎(chǔ)入門使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧
    2018-12-12
  • c語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易版三子棋(附完整代碼)

    c語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易版三子棋(附完整代碼)

    大家好,本篇文章主要講的是c語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易版三子棋(附完整代碼),感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • Qt使用QCustomPlot的實(shí)現(xiàn)示例

    Qt使用QCustomPlot的實(shí)現(xiàn)示例

    QCustomPlot是一個(gè)基于Qt C++的圖形庫(kù),用于繪制和數(shù)據(jù)可視化,并為實(shí)時(shí)可視化應(yīng)用程序提供高性能服務(wù),本文主要介紹了Qt使用QCustomPlot的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2024-01-01
  • 基于C++寫一個(gè)推箱子小游戲

    基于C++寫一個(gè)推箱子小游戲

    這篇文章主要為大家詳細(xì)介紹了基于C++寫一個(gè)推箱子小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2023-09-09
  • C語(yǔ)言實(shí)現(xiàn)新生入學(xué)登記系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)新生入學(xué)登記系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)新生入學(xué)登記系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06

最新評(píng)論

庆元县| 疏勒县| 吴堡县| 宁海县| 弥渡县| 武功县| 中江县| 无为县| 洱源县| 清远市| 光山县| 吴川市| 保康县| 涞源县| 阿克陶县| 岑巩县| 新晃| 乐亭县| 景宁| 安吉县| 二手房| 赤壁市| 什邡市| 翼城县| 全南县| 耿马| 尚义县| 南城县| 台湾省| 如东县| 蛟河市| 泰来县| 九江市| 华阴市| 东平县| 长岛县| 吉首市| 县级市| 乌兰浩特市| 香港| 霞浦县|