類成員函式呼叫的細節

2022-05-31 09:30:19 字數 409 閱讀 8320

class concrete

void printerror()

private:

int val;

};

void main()

為什麼會出現這種情況呢??

原來是, 函式定義的時候,就一直存在了。即無聊是否 例項化了乙個物件,print()這個函式,都是存在的。

所以 pc->print();是可以找到函式的入口的。 只是這時候, 都傳入了乙個 this指標

因為print函式中,沒有使用到this 的其他成員變數, 所以不會有問題。

而printerro中,val =10; 可以看成是this->val = 100; 因為這時候this 是非法的, 所以呼叫失敗。

類成員函式呼叫

大家都知道c 的虛函式前必須加virtual,但如果一連串的繼承下來,有的忘了加virtual會出現什麼情況呢?為了滿足我的好奇心,做了點實驗然後有了本文,僅僅是好玩,沒有啥實際意義。本文只給出vs2005的情況 首先,如果是單一類,沒加virtual的話那麼好辦,直接call a fun,非sta...

c 類的成員函式的呼叫

我知道c 有乙個虛函式列表,物件有指向虛函式列表的指標,對於有虛函式的類物件呼叫虛函式時通過虛函式列表裡面的指標實現的。但是對於普通的非虛函式是怎麼實現呼叫的呢 是怎麼找到非虛函式的入口位址?好像類物件裡面只有類的一些資料成員。求解惑 求詳細的記憶體層次的變化 2013 09 10 20 39 提問...

通過函式指標呼叫類成員函式的方法

通過函式指標呼叫乙個函式的時候,此函式必須有具體的位址,因此當呼叫乙個類成員函式的時候,此成員函式必須宣告為static,即靜態成員函式,這樣就能通過函式指標獲取到成員函式的位址,進而呼叫。關於靜態成員函式 編譯器在編譯乙個普通成員函式時,會隱式地增加乙個形參this,並把當前物件的位址賦值給thi...