指向類成員的指標並非指標

2021-06-07 19:39:53 字數 875 閱讀 3847

指向類成員的指標並非指標

對於指向類成員的指標,必須緊記,指向類成員(非static)的指標並非指標。

1、與常規指標不同,乙個指向成員的指標並不指向乙個具體的記憶體位置,它指向的是乙個類的特定成員,

而不是指向特定物件裡的特定成員。通常最清晰的做法,是將指向資料成員的指標看作為乙個偏移量。

這個偏移量告訴你,乙個特定成員的位置距離物件的起點有多少個位元組。

2、給定乙個成員在類內的偏移量,為了訪問位於那個偏移量的資料成員,我們需要該類的乙個物件的位址。這時候就需要 .*和->*的操作。pc->*pimc,請求將pc內的位址加上pimc內的偏移量,為的是訪問pc所指向的c物件中適當的資料成員。ac.*pimc,請求ac的位址加上pimc中的偏離量,也是為了訪問pc所指向的c物件中適當的資料成員。

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

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

3、獲取非靜態成員函式的位址時,得到的不是乙個位址,而是乙個指向成員函式的指標。

4、為了對乙個指向成員函式的指標進行解引用,需要乙個物件或乙個指向物件的指標。對於指向資料成員的指標的情形,為了訪問該成員,需要將物件的位址和成員的偏移量相加。對於指向成員函式的指標的情形,需要將物件的位址用作this指標的值,進行函式呼叫,以及作為其他用途。

5、乙個指向成員函式的指標的實現自身必須儲存一些資訊,諸如它所指向的成員函式是虛擬的還是非虛擬的,到**支找到的適當的虛函式表指標等等。

6、另外補充一點關於指向內聯函式的指標的問題。乙個函式指標指向內聯函式是合法的。然而,通過函式指標呼叫內聯函式將不會導致內聯式的函式呼叫,因為編譯器無法在編譯期精確地確定將會呼叫什麼函式。因此在呼叫點,編譯器別無他法,只好生成間接、非內聯的函式呼叫**。

指向類成員變數的指標並非指標

參考 如果你已經熟悉常規指標的宣告語法,那麼宣告乙個 指向類成員變數的指標 並不複雜 int ip 乙個指向int變數的指標 int c ip 乙個指向c類中int成員變數的指標 你必須要做的就是多寫乙個classname 來限定這個指標到底指向哪個類 乙個常規的指標包含乙個位址.如果解引用該指標,...

指向類成員變數的指標並非指標

參考 如果你已經熟悉常規指標的宣告語法,那麼宣告乙個 指向類成員變數的指標 並不複雜 int ip 乙個指向int變數的指標 int c ip 乙個指向c類中int成員變數的指標 你必須要做的就是多寫乙個classname 來限定這個指標到底指向哪個類 乙個常規的指標包含乙個位址.如果解引用該指標,...

指向類成員的指標

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