<六>指向類成員的指針
指向類成員(成員變量和成員方法)的指針
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 Test2::*p = &Test2::ma;
*p=30;//這樣操作沒有意義,因為ma是需要基于對象的,所以需要這樣
Test2 t;
int Test2::*p = &Test2::ma;
t.*p=30;
或者
Test2 *pt=new Test2();
int Test2::*pp = &Test2::ma;
pt->*pp=40;
或者
int *p3=&Test2::mb;
*p3=50;
2:定義一個函數(shù)指針指向類的成員函數(shù)
void (*pf)() = &Test2::f1(); 編譯報錯
要明確的指出pf是指向Test2類中函數(shù)的函數(shù)指針,如下
void(Test2::*pf)()=&Test2::f1();
如果通過函數(shù)指針調(diào)用函數(shù)?需要依賴對象,如下
Test2 t3;
Test2 p4=new Test2();
t3.pf(); //*解引用
(p4->*pf)();// *解引用
3:定義函數(shù)指針指向類的靜態(tài)成員方法
void (pf2)() = &Test2::static_f;
(pf2)();
完整示例代碼如下
點擊查看代碼
class Test2{
public:
int ma;
static int mb;
void f1(){cout<<"Test::void f1()"<<this->ma<<endl;}
static void static_f(){
cout<<"Test::void static_f()"<< mb<<endl;
}
Test2(int _ma):ma(_ma){}
};
int Test2::mb=0;
int main(){
Test2 obj1(100);
Test2 *pObj2=new Test2(20);
//定義指針指向 類的普通成員變量
int Test2::*p = &Test2::ma;
obj1.*p=1000;
pObj2->*p=2000;
//定義指針指向 類的 靜態(tài)成員變量
int *pStatic = &Test2::mb;
*pStatic=9999;
//定義函數(shù)指針 指向 類的普通成員方法
void (Test2::*pf)()=&Test2::f1;
(obj1.*pf)();
(pObj2->*pf)();
//定義函數(shù)指針 指向 類的靜態(tài)方法
void (*pf2)() = &Test2::static_f;
(*pf2)();
return 1;
}
上一篇:&lt;四&gt;構(gòu)造函數(shù)初始化列表
欄 目:C++
下一篇:&lt;五&gt;關(guān)于類的各類成員
本文標(biāo)題:&lt;六&gt;指向類成員的指針
本文地址:http://mengdiqiu.com.cn/a1/c++/17094.html


閱讀排行
本欄相關(guān)
- 04-02qt用法小結(jié)2021_11_19
- 04-02Visual Studio C++ 默認(rèn) UTF-8 編碼及 *.edi
- 04-02&lt;五&gt;關(guān)于類的各類成
- 04-02【C++】extern &quot;C&quot;詳
- 04-02&lt;六&gt;指向類成員的指
- 04-02&lt;三&gt;對象的淺拷貝和
- 04-02&lt;四&gt;構(gòu)造函數(shù)初始化
- 04-02[C++]
- 04-02&lt;二&gt;掌握構(gòu)造函數(shù)和
- 04-02SLAM十四講CH8代碼
隨機(jī)閱讀
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10C#中split用法實例總結(jié)
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05DEDE織夢data目錄下的sessions文件夾有什