1 、函數指標的定義
int (*fp)(int a);//定義了一個指向函數的指標
int *fp(int a);//錯誤,這是一個返回整形指標的函數了,而不是函數指標。
int _tmain(int argc, _TCHAR* argv[]){//////////////////////////////////////////////////////////////////////////Example1cout << FuncTestMethod <<endl; //輸出函數地址 int (*fPtr)(int i);//定義函數指標fPtr = FuncTestMethod;//;//將函數FuncTestMethod的地址賦給函數指標fPtrcout << fPtr(5) << " | " << (*fPtr)(15) <<endl;//上面的輸出fp(5),這是標準c++的寫法,(*fp)(15)這是相容c語言的標準寫法,兩種同意,但注意區分,避免寫的程式產生移植性問題! //////////////////////////////////////////////////////////////////////////Example2cout << FuncTestMethod <<endl; //輸出函數地址typedefint (*fPtr)(int i);//定義函數指標類型,類型名為fPtr。typedef定義可以簡化函數指標的定義 fPtr f;//這裡利用自己定義的類型名fPtr定義了一個f的函數指標! f = FuncTestMethod;//;//將函數FuncTestMethod的地址賦給函數指標fPtrcout << fPtr(5) << " | " << (*fPtr)(15) <<endl;//上面的輸出fp(5),這是標準c++的寫法,(*fp)(15)這是相容c語言的標準寫法,兩種同意,但注意區分,避免寫的程式產生移植性問題! return 0;}int FuncTestMethod(int i){return i;}
2、函數指標所指向的函數,必須為全域函數或類的靜態函數
class FuncPtr{typedef int (*func)(void);public:void FuncPtrTet(func func1){(*func1)();};static int display(void){cout <<"display"<<endl;return 0;}};
int display2(void){cout <<"display2"<<endl;return 2;}
實現
int _tmain(int argc, _TCHAR* argv[]){FuncPtr f;f.FuncPtrTet(FuncPtr::display);f.FuncPtrTet(display2);return 0;}