定義指向類裡的資料成員時:
int objectclass::*pointertomember = &objectclass::a;
因為僅僅提到了乙個類而非那個類的物件,所以沒有objectclass::a的確切「位址」,因而&objectclass::a僅是作為成員指標的語法被使用。
使用時:
object.*pointertomember = 1; or objectpointer->*pointertomember=1;
定義指向類裡的函式指標時:
int (objectclass::*fp) (int) = &objectclass::function;(這裡的&不能省略,但是可以給出不含引數列表的函式識別符號,因為過載方案可以由成員指標的型別決定)
使用時:
(object.*fp)(1); or (objectpointer->*fp)(1);
在給成員指標初始化時,要寫上類的名稱 (&objectclass::function) 在類裡面時候,可能認為沒必要加類名寫成 &function, 但是這不符合成員函式的語法。語法要求帶上類名。
在間接引用時也要指明物件,如在類裡可能認為寫成 (*fp)(1)就行了,但是語法要求帶上物件,(this->*fp)(1);
------------------------
以上內容都出自thinking in c++的第11章。
寫在這裡僅是為了總結一下看完這一章的收穫。
指向類成員的指標
一 指向類的普通成員的指標 非靜態 1 指向類成員函式的指標 簡單的講,指向類成員函式的指標與普通函式指標的區別在於,前者不僅要匹配函式的引數型別和個數以及返回值型別,還要匹配該函式指標所屬的類型別。總結一下,比較以下幾點 a 引數型別和個數 b 返回值型別 c 所屬的類型別 特別之處 究其原因,是...
指向類成員的指標
前面曾寫過一篇惱人的函式指標 一 總結了普通函式指標的宣告 定義以及呼叫,還有函式指標陣列,函式指標用作返回值等。但是作為c 的研讀,我發現我漏掉了乙個最重要的內容,就是指向類成員的指標,這裡將做相應補充 相關 測試環境為vs 2010 指向類成員的指標總的來講可以分為兩大類四小類 指向資料成員還是...
指向類成員的指標
在c 語言中,可以定義乙個指標,使其指向類成員或成員函式,然後通過指標來訪問類的成員。這包括指向屬性成員的指標和指向成員函式的指標。指向非靜態資料成員的指標在定義時必須和類相關聯,在使用時必須和具體的物件關聯。由於類不是執行時存在的物件。因此,在使用這類指標時,需要首先指定類的乙個物件,然後,通過物...