C++獲取類的成員函數(shù)的函數(shù)指針詳解及實(shí)例代碼
C++獲取類的成員函數(shù)的函數(shù)指針詳解
用一個(gè)實(shí)際代碼來說明。
class A { public: staticvoid staticmember(){cout<<"static"<<endl;} //static member void nonstatic(){cout<<"nonstatic"<<endl;} //nonstatic member virtualvoid virtualmember(){cout<<"virtual"<<endl;};//virtual member }; int main() { A a; //static成員函數(shù),取得的是該函數(shù)在內(nèi)存中的實(shí)際地址,而且因?yàn)閟tatic成員是全局的,所以不能用A::限定符 void(*ptrstatic)()=&A::staticmember; //nonstatic成員函數(shù) 取得的是該函數(shù)在內(nèi)存中的實(shí)際地址 void(A::*ptrnonstatic)()=&A::nonstatic; //虛函數(shù)取得的是虛函數(shù)表中的偏移值,這樣可以保證能過指針調(diào)用時(shí)同樣的多態(tài)效果 void(A::*ptrvirtual)()=&A::virtualmember; //函數(shù)指針的使用方式 ptrstatic(); (a.*ptrnonstatic)(); (a.*ptrvirtual)(); }
可以參考《C++ Primer(3rd)》第532頁13.6指向類成員的指針一節(jié)~
1.一個(gè)指向外部函數(shù)的指針聲明為:
void(*pf)(char*,constchar*); void strcpy(char* dest,constchar* source); pf=strcpy;
2.一個(gè)指向類A成員函數(shù)的指針聲明為:
void(A::*pmf)(char*,constchar*);
聲明的解釋是:pmf是一個(gè)指向A成員函數(shù)的指針,返回?zé)o類型值,函數(shù)帶有二個(gè)參數(shù),參數(shù)的類型分別是char * 和 const char *。除了在星號(hào)前增加A:: ,與聲明外部函數(shù)指針的方法一樣。
3.給成員指針賦值的方法是將函數(shù)名通過指針符號(hào)&賦予指針名。
如下所示:
class A { public: void strcpy(char*,constchar*); void strcat(char*,constchar*); }; pmf =&A::strcpy;
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
C++實(shí)現(xiàn)list增刪查改模擬的示例代碼
本文主要介紹了C++實(shí)現(xiàn)list增刪查改模擬,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12C語言實(shí)現(xiàn)的統(tǒng)計(jì)php代碼行數(shù)功能源碼(支持文件夾、多目錄)
這篇文章主要介紹了C語言實(shí)現(xiàn)的統(tǒng)計(jì)php代碼行數(shù)功能源碼,支持文件夾、多級(jí)目錄的統(tǒng)計(jì),在一些環(huán)境中會(huì)用到這個(gè)功能,需要的朋友可以參考下2014-08-08C++/Php/Python 語言執(zhí)行shell命令的方法(推薦)
下面小編就為大家?guī)硪黄狢++/Php/Python 語言執(zhí)行shell命令的方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03C語言實(shí)現(xiàn)注冊(cè)登錄系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)注冊(cè)登錄系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12