因為它們都使用了同乙個this指標,乙個指向基類成員函式的指標可以被當做是指向derived2的成員函式指標來使用,不需要進行任何的轉換操作。
在單繼承中,指向乙個類的成員函式指標的大小就是該平台指標的大小。
但是如果你使用到了多重繼承,則事情就開始變得有趣起來:
這個時候,就會存在兩個可能的this指標。第乙個(p)可以被子類derived和基類base1使用,第二個(q)可以被子類base2使用。
乙個指向base1的成員函式的指標可以被當做乙個指向derived的函式指標來使用,因為它們都使用了相同的this指標。
但是,乙個指向base2的成員函式指標就不能被當做乙個指向derived的成員函式指標來使用,因為這個時候,this指標需要做乙個微小的移動。
要解決這個問題,有很多不同的方法。visual studio編譯器是這樣處理的。
關於C 成員函式指標的一些探索
這幾天看 深入探索c 物件模型 遇到乙個問題,思考了好久,是關於成員函式指標的。看下面這段 class base virtual void y class derived public base virtual void y override int main 其在visual studio2013...
一些奇怪的錯誤
無向邊陣列要開2倍!乘法取模要開long long!max初值應為 inf,min初值應為inf!數學函式,遞推式等數學表示式要注意特殊情況,如 x 0,求l og x a 1,求b a 1 非void函式無返回值 開 wall就好 大於 mod 的數一定要先取模再乘,比如 n mod ad 錯誤 ...
istream類的一些成員函式
呼叫方法 cin.getline 字元陣列 或字元指標 字元個數n,終止標誌字元 預設是以 n 為終止標字元,即終止標誌字元可以不寫。特別注意 用getline函式從輸入流讀字元時,遇到終止標誌字元時結束,指標移到該終止標誌字元之後,下乙個getline函式將該終止標誌的下乙個字元開始接著讀入,如果...