指向類的成員的指標

2021-05-23 13:51:45 字數 1492 閱讀 2598

在c++中,可以說明指向類的資料成員和成員函式的指標 。

指向資料成員的指標格式如下:

《型別說明符》《類名》::*《指標名》

指向成員函式的指標格式如下:

《型別說明符》(《類名》::*《指標名》)(《參數列》)

例如,設有如下乙個類a:

class a

a(int i) 

int c;

private:

int a;

};定義乙個指向類a的資料成員c的指標pc,其格式如下:

int a:: *pc = &a::c;

再定義乙個指向類a的成員函式fun的指標pfun,其格式如下:

int (a:: *pfun)(int) = a::fun;

由於類不是執行時存在的物件。因此,在使用這類指標時,需要首先指定a類的乙個物件,然後,通過物件來引用指標所指向的成員。例如,給pc指標所指向的資料成員c賦值8,可以表示如下:

a a;

a.*pc = 8;

其中,運算子.*是用來對指向類成員的指標來操作該類的物件的 。

如果使用指向物件的指標來對指向類成員的指標進行操作時,使用運算子->* 。例如:

a *p = &a;    //a是類a的乙個物件,p是指向物件a的指標。

p ->* pc = 8;

讓我們再看看指向一般函式的指標 的定義格式:

《型別說明符》*《指向函式指標名》(《參數列》)

關於給指向函式的指標賦值的格式如下:

《指向函式的指標名》=《函式名》

關於在程式

中,使用指向函式的指標呼叫函式的格式如下:

(*《指向函式的指標名》)(《實參表》)

如果是指向類的成員函式的指標還應加上相應的物件名和物件成員運算子。

下面給出乙個使用指向類成員指標的例子:

#include 

class a

int fun(int b) 

int c;

private:

int a;

};void main()

{a x(8);        //定義類a的乙個物件x

int a::*pc;    //定義乙個指向類資料成員的指標pc

pc=&a::c;    //給指標pc賦值

x.*pc=3;    //用指標方式給類成員c賦值為3

int (a::*pfun)(int);    //定義乙個指向類成員函式的指標pfun

pfun=a::fun;        //給指標pfun賦值

a *p=&x;        //定義乙個物件指標p,並賦初值為x

cout<<(p->*pfun)(5)《程式

定義了好幾個指標,雖然它們都是指標,但是所指向的物件是不同的。p是指向類的物件;pc是指向類的資料成員;pfun是指向類的成員函式。 因此它們的值也是不相同的。

本文**:http://blog.csdn.net/qhmao/archive/2009/07/10/4337701.aspx

指向類成員的指標

一 指向類的普通成員的指標 非靜態 1 指向類成員函式的指標 簡單的講,指向類成員函式的指標與普通函式指標的區別在於,前者不僅要匹配函式的引數型別和個數以及返回值型別,還要匹配該函式指標所屬的類型別。總結一下,比較以下幾點 a 引數型別和個數 b 返回值型別 c 所屬的類型別 特別之處 究其原因,是...

指向類成員的指標

前面曾寫過一篇惱人的函式指標 一 總結了普通函式指標的宣告 定義以及呼叫,還有函式指標陣列,函式指標用作返回值等。但是作為c 的研讀,我發現我漏掉了乙個最重要的內容,就是指向類成員的指標,這裡將做相應補充 相關 測試環境為vs 2010 指向類成員的指標總的來講可以分為兩大類四小類 指向資料成員還是...

指向類成員的指標

在c 語言中,可以定義乙個指標,使其指向類成員或成員函式,然後通過指標來訪問類的成員。這包括指向屬性成員的指標和指向成員函式的指標。指向非靜態資料成員的指標在定義時必須和類相關聯,在使用時必須和具體的物件關聯。由於類不是執行時存在的物件。因此,在使用這類指標時,需要首先指定類的乙個物件,然後,通過物...