C++很多類庫都喜歡用回調函數(shù),MFC中的定時器,消息機制,hook機制等待,包括現(xiàn)在在研究的cocos2d-x中也有很多的回調函數(shù)。
1.回調函數(shù)
什么是回調函數(shù)呢?回調函數(shù)其實就是一個通過函數(shù)指針調用的函數(shù)!假如你把A函數(shù)的指針當作參數(shù)傳給B函數(shù),然后在B函數(shù)中通過A函數(shù)傳進來的這個指針調用A函數(shù),那么這就是回調機制。B函數(shù)就是回調函數(shù),而通常情況下,A函數(shù)是系統(tǒng)在符合你設定條件的情況下會自動執(zhí)行,比如Windows下的消息觸發(fā)等等。那么調用者和被調用者的關系就被拉開了,就像是中斷處理函數(shù)那樣。
2.函數(shù)指針
函數(shù)指針是一個指針,只是這個指針它不像普通的指針指向是是一個變量,此時它指向的是一個函數(shù),也就是它存儲的是一個函數(shù)的地址,如果我們愿意的話,可以改變這個它的值,讓他由指向funA轉變?yōu)橹赶騠unB,那么這個函數(shù)指針的作用就改變了。
3.函數(shù)指針的使用
3.1函數(shù)指針聲明
[cpp]?view plaincopy typedef?返回類型(*函數(shù)指針類型名)(函參列表);??
3.2示例
[cpp]?view plaincopy typedef?void(*Fun)(int,int);?//定義函數(shù)指針類型?? void?min(int?a,int?b);?? void?max(int?a,int?b);?? ?? void?min(int?a,int?b)?? {?? ????int?minvalue=a<b?a:b;?? ????std::cout<<"min?value?is?"<<minvalue<