先來看看多重繼承的對象組織的結構實際上,多重繼承vc都將它解釋為這個結構。但是多重集成中實際在內存中的組織是很不一樣的00B606D8 0046F020 offset test3.D::`vftable'00B606DC CDCDCDCD A::a00B606E0 CDCDCDCD B::b00B606E4 0046F01C offset test3.D::`vftable'00B606E8 CDCDCDCD A::a00B606EC CDCDCDCD C::c00B606F0 CDCDCDCD D::d
note: 按照道理來說兩個offset test3.D::`vftable'應該指向同一個地方才對,可這里是? 第二個offset test3.D::`vftable'指向的位置是第二篇講過的跳轉函數!2.虛繼承
00A806D8 0046F02C offset test3.D::`vbtable'00A806DC CDCDCDCD B::b00A806E0 0046F020 offset test3.D::`vbtable'00A806E4 CDCDCDCD C::c00A806E8 CDCDCDCD A::a00A806EC 0046F01C offset test3.D::`vftable'00A806F0 CDCDCDCD D::d第一和第二個offset test3.D::`vbtable' 指向一個偏移跳轉表,它的表中用偏移指向了真正的offset test3.D::`vbtable',第三個是真正的offset test3.D::`vbtable'地址0046F01C >004011A9 test3.004011A9 第三個offset test3.D::`vbtable' 0046F020 >00000000 第二個offset test3.D::`vbtable' 0046F024 0000000C 偏移C0046F028 000000000046F02C >00000000 第一個offset test3.D::`vbtable' 0046F030 00000014 便宜14