以上代碼是在論壇中遇見的,當時我并沒有立刻反應上來這是什么緣故,思索一陣后,才弄明白。原來,在Derive中沒有重寫f函數,又因為當派生類沒有重寫基類的虛函數時,派生類對象對該虛函數的調用,將會調用其基類中的版本,而Derive又是多繼承,于是在Derive繼承時就不知道Base1中的虛函數表應該記錄哪個版本的f函數,是Base2,還是Base3。因為Derive中已重定義g函數,Base1的虛函數表記錄的是Derive::g。
==============================================================================問題2:代碼來源<effective C++>2nd