<六>指向類成員的指針

指向類成員(成員變量和成員方法)的指針
1:定義一個指針指向類的普通成員變量
示例代碼1

點擊查看代碼class Test2{public:int ma;static int mb;void f1(){cout<<"Test::void f1()"<<endl;}static void static_f(){cout<<"Test::void static_f()"<<endl;}};int Test2::mb=0;int main(){int *p = &Test2::ma;return 1;}
上面 int *p = &Test2::ma; 可以這樣嗎?不可以,編譯報錯 不可以將int Test2::* 轉為 int *
點擊查看代碼需要這樣定義intTest2::*p = &Test2::ma;*p=30;//這樣操作沒有意義,因為ma是需要基于對象的,所以需要這樣Test2t;intTest2::*p = &Test2::ma;t.*p=30;或者Test2 *pt=new Test2();intTest2::*pp = &Test2::ma;pt->*pp=40;或者int *p3=&Test2::mb;*p3=50;
2:定義一個函數指針指向類的成員函數
void (*pf)() = &Test2::f1(); 編譯報錯
要明確的指出pf是指向Test2類中函數的函數指針,如下
void(Test2::*pf)()=&Test2::f1();
如果通過函數指針調用函數?需要依賴對象,如下Test2t3;Test2

    推薦閱讀