








































































先來看看多重繼承的對象組織的結(jié)構(gòu)
實(shí)際上,多重繼承vc都將它解釋為這個(gè)結(jié)構(gòu)。但是多重集成中實(shí)際在內(nèi)存中的組織是很不一樣的
00B606D8 0046F020 offset test3.D::`vftable'
00B606DC CDCDCDCD A::a
00B606E0 CDCDCDCD B::b
00B606E4 0046F01C offset test3.D::`vftable'
00B606E8 CDCDCDCD A::a
00B606EC CDCDCDCD C::c
00B606F0 CDCDCDCD D::d
note:
按照道理來說兩個(gè)offset test3.D::`vftable'應(yīng)該指向同一個(gè)地方才對,可這里是?
第二個(gè)offset test3.D::`vftable'指向的位置是第二篇講過的跳轉(zhuǎn)函數(shù)!
2.虛繼承









































































00A806D8 0046F02C offset test3.D::`vbtable'
00A806DC CDCDCDCD B::b
00A806E0 0046F020 offset test3.D::`vbtable'
00A806E4 CDCDCDCD C::c
00A806E8 CDCDCDCD A::a
00A806EC 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 偏移C
0046F028 00000000
0046F02C >00000000 第一個(gè)offset test3.D::`vbtable'
0046F030 00000014 便宜14