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