先来看看多重继承的对象组织的结构实际上,多重继承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