天天看點

圖解C++虛繼承與虛函數的記憶體布局

序言:

這裡 A 為 基類 有一個純虛函數,目的是多态(虛函數表指針),還有造成一個棱形二義性的變量,是以使用虛繼承,目的虛表指針:

左邊是代碼 右邊是 記憶體布局和解釋;希望能幫到你。

圖解C++虛繼承與虛函數的記憶體布局

總結:

可以看到 在記憶體布局中: 依次是繼承順序的兩個父類虛基表和類成員資訊;然後 是虛函數表指針,基類的成員。

再來看看 虛繼承的含虛函數類對象記憶體布局 和 普通含虛函數類對象記憶體布局 的對比:

圖解C++虛繼承與虛函數的記憶體布局

詳細看圖解,鄙人不喜歡用語言,喜歡用圖像

繼續閱讀