C++面試題目
C++中多繼承下的多態機制。
解決方案
一個子類有兩個或以上直接父類時稱這個繼承關係為多繼承,這種繼承使得一個子類可以繼承多個父類的特性。
對於如下有多重繼承的實例:
多重繼承(無虛函數覆蓋的情況)
對應的虛函數模型示意圖如下:
1) 每個父類都有自己的虛表。
2) 子類的成員函數被放到了第一個父類(按照父類聲明的順序)的表中。
多重繼承(有虛函數覆蓋的情況)
如下圖所示,子類中覆蓋了父類的f()函數。
對應的虛函數模型示意圖如下:
三個父類虛函數表中的f()的位置被替換成了子類的函數指針,這樣就可以保證調用到f()函數。
內存分配實例
如下代碼,class D繼承自class A、class B、class C。
在VC6.0下的內存結構:
閱讀更多 半杯茶的小酒杯 的文章