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...