先來看看多重繼承的對(duì)象組織的結(jié)構(gòu)實(shí)際上,多重繼承vc都將它解釋為這個(gè)結(jié)構(gòu)。但是多重集成中實(shí)際在內(nèi)存中的組織是很不一樣的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: 按照道理來說兩個(gè)offset test3.D::`vftable'應(yīng)該指向同一個(gè)地方才對(duì),可這里是? 第二個(gè)offset test3.D::`vftable'指向的位置是第二篇講過的跳轉(zhuǎn)函數(shù)!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第一和第二個(gè)offset test3.D::`vbtable' 指向一個(gè)偏移跳轉(zhuǎn)表,它的表中用偏移指向了真正的offset test3.D::`vbtable',第三個(gè)是真正的offset test3.D::`vbtable'地址0046F01C >004011A9 test3.004011A9 第三個(gè)offset test3.D::`vbtable' 0046F020 >00000000 第二個(gè)offset test3.D::`vbtable' 0046F024 0000000C 偏移C0046F028 000000000046F02C >00000000 第一個(gè)offset test3.D::`vbtable' 0046F030 00000014 便宜14