虛繼承和虛基類的對象模型

概念
     爲了解決不同途徑繼承來的同名的數據成員和成員函數在內存中有不同的拷貝造成數據不一致的問題,將共同的基類設置爲虛基類。這時,不同路徑繼承下來的同名的數據成員在內存中只有一個拷貝,成員函數名也只有一個映射。這樣解決了二義性的問題,避免了數據不一致的問題,也節省了內存


解決辦法:
     解決數據二義性的問題的辦法就是虛繼承,將共同的基類設置成虛基類。在多繼承的情況下,虛基類關鍵字的作用範圍和繼承方式關鍵字相同,只對緊跟其後的基類起作用。聲明瞭虛基類以後,虛基類和進一步派生的過程中始終和派生類一起,維護同一個基類子對象的拷貝。

虛基類:
     將共同的基類設置爲虛基類     

虛繼承的特點
     繼承B,C的類不會從B, C中直接繼承A的成員,它只會直接從A中繼承,所以不會造成D中有兩份A成員的拷貝。

如果sizeof(A) = 4的話,那麼sizeof(B) = 12。因爲B中有B的一個虛表指針,一個B的成員,還有一個A的成員。




發佈了186 篇原創文章 · 獲贊 27 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章