類成員的指標

2021-07-04 09:08:39 字數 2863 閱讀 2975

ps

:const

物件只能呼叫

const

函式!!非

const

物件隨便!!

成員指標只應用於類的非static 成員。static 類成員不是任何物件的組成部分,所以不需要特殊語法來指向static 成員,static

成員指標是普通指標。

int *p = &screen::total;   

(total 是

static int total;)

例子:

#include

using namespace std;

class screen

int a(int i, int j) };

int screen::total = 6;

int main()

輸出:244     

----------先出來

2**6**8

l  宣告成員指標

class screen ;

ü  定義資料成員的指標

如contents

stringscreen::*ptr = &screen::contents;

screen::index

screen::*p = &screen::cursor;

ü  定義成員函式的指標

成員函式的指標必須在三個方面與它所指函式的型別相匹配:

1. 函式形參的型別和數目,包括成員是否為const。

2. 返回型別。

3. 所屬類的型別。

如get()

char (screen::*p)()const = &screen::get;

char (screen::*p)(screen::index,screen::index)const = &screen::get;

ü  為成員指標使用型別別名

typedef char (screen::*action)(screen::index, screen::index) const;

action p = &screen::get;

l  使用類成員指標

•成員指標解引用操作符(.*)從物件或引用獲取成員。

ps

:不能過載的操作符(

:: 

.  .*  ?:

必須成員函式(

=    ()  ->

必須友元(

<<  

>>

•成員指標箭頭操作符(->*)通過物件的指標獲取成員。

ü  使用成員函式指標

char (screen::*pmf)() const = &screen::get;

screen myscreen;

char c1 = myscreen.get();

char c2 =(myscreen.*pmf)();// equivalent call to get

screen *pscreen = &myscreen;

c1 = pscreen->get();

c2 =(pscreen->*pmf)();// equivalent call to get

因為呼叫操作符(())比成員指標操作符優先順序高,所以呼叫(myscreen.*pmf)() 和(pscreen->*pmf)() 需要括號。

ü  使用資料成員指標

screen::index screen::*pindex = &screen::width;

screen myscreen;

screen::index ind1 = myscreen.width;

screen::index ind2 =myscreen.*pindex;// dereference to get width

screen *pscreen;

ind1 = pscreen->width;

ind2 =pscreen->*pindex;// dereference pindex to get width

ps:

不要加括號!!!

****************成員函式的指標不同與普通函式的指標************

成員函式的指標:

char (screen::*pmf)() const = &screen::get;   

//必須有

&

使用是(myscreen.*pmf)()

或者(pscreen->*pmf)()

普通函式的指標:

char (*pmf)() const = &get;  

或者char (*pmf)() const =get;

使用是

pmf()或者

(*pmf)()

類成員指標

類成員指標一般很少用到,使用類成員的指標與普通指標的區別在於,需要在類成員指標前面的加上類限定符,以指明是哪個類的成員指標。同樣,在初始化指標時,也只能用相應類的相應型別的成員對指標進行初始化。成員指標的應用舉例 當乙個類有多個性質相同且型別相同的函式成員時,可以使用函式表來進行函式呼叫,產生用同一...

類成員指標

看到深度探索c 物件模型3.2節,其中給出了乙個判斷access section出現先後順序的模板函式如下 templatechar access order data type1 class type mem1,data type2 class type mem2 用以下程式測試 class po...

類成員指標

首先 函式指標是指向一組同型別的函式的指標 而類成員函式我們也可以相似的認為,它是指向同類中同一組型別的成員函式的指標,當然這裡的成員函式更準確的講應該是指非靜態的成員函式。前者是直接指向函式位址的,而後者我們從字面上也可以知道 它肯定是跟類和物件有著關係的。typedef int p int,in...