1、從封裝的角度看,類可認為是乙個命名空間,名稱就是類名。類中有兩個成員:欄位和方法。
2、指標可以指向任何物件,當然也可以指向類中的字段和方法。那麼該如何指向類中的字段和方法呢?
3、分別是:
int animal::*pdata = &animal::_age;
int (animal::*pfun)() = &animal::getage;
4、我們定義指向類中字段或者方法的指標,往往是為了通過指標和物件繫結一起,去修改字段或者訪問方法,這種情況下,我們不需要直到類的欄位名或者方法名。該怎麼做呢?
既然是指向字段或者方法的指標,通過*解引用,就得到了字段或者指標。對於物件使用.*,對於指標使用->*。需要注意的是,.*是在一起的,不能使用括號分開,對於->*也是一樣的道理。
1int animal::*pdata;
2 pdata = &animal::_age;34
int (animal::*pfun)() = &animal::getage;56
animal a;
7 a.*pdata = 9
;8 cout<<(a.*pfun)()<910 animal *b = new
animal;
11 b->*pdata = 8
;12 cout<<(b->*pfun)()<
指向類成員的指標
一 指向類的普通成員的指標 非靜態 1 指向類成員函式的指標 簡單的講,指向類成員函式的指標與普通函式指標的區別在於,前者不僅要匹配函式的引數型別和個數以及返回值型別,還要匹配該函式指標所屬的類型別。總結一下,比較以下幾點 a 引數型別和個數 b 返回值型別 c 所屬的類型別 特別之處 究其原因,是...
指向資料成員的指標
指向資料成員的指標 收藏 指向資料成員的指標 指向資料成員的指標,是乙個有點神秘又頗有用處的語言特性,特別是如果你需要詳細調查class members的底層布局的話。這樣的調查可以用於決定vptr是放在class的起始處或者尾端。另外乙個用途是可以用來決定class中的access section...
指向成員函式的指標
指向成員函式的指標 取乙個非靜態成員函式的位址,如果該函式是nonvirtual,則得到的結果是它在記憶體中真正的位址。然而這個值也不是完全的,它也需要被繫結於某個class object的位址上,才能夠通過它呼叫該函式。所有的非靜態成員函式都需要物件的位址 以引數this指出 乙個指向成員函式的指...