哪位高手能帮小弟我解答一下关于c++虚继承情况下的强制类型转换原理

谁能帮我解答一下关于c++虚继承情况下的强制类型转换原理
无虚继承的情况下,编译期就可以确定偏移量。但是有虚继承的情况下如何处理,却很棘手。希望大家能给点线索,一些基础内容可以参考我写的这篇文章http://www.cnblogs.com/huangfeidian/p/3548115.html。
希望大家能对我的这篇文章的评论中提出的问题给出答案。
谢。
------解决方案--------------------
一种可行的技术是thunk
LZ何不拜读下Lippman的《Inside The c++ Object Model》
------解决方案--------------------
引入一个间接层,比如在对象开始后第四个字节开始4个字节表示虚基类1的偏移,再接着4个字节表示虚基类2的偏移.
或者把这些偏移量作为一个表然后在对象开始后第四个字节开始放这个表的指针,虚基类1的偏移作为表项1,虚基类2的偏移作为表项2.

这样,对于继承
    V
A     B  D
   C

有A的布局
vptrA offsetV dataA 
------解决方案--------------------
 vptrV dataV
B的布局
vptrB offsetV dataB 
------解决方案--------------------
 vptrV dataV
C的布局
vptrC(可以和vptrA共用) offsetV dataA 
------解决方案--------------------
 vptrB offsetV dataB 
------解决方案--------------------
 DataD 
------解决方案--------------------
 vptrV dataV

C强转A时不用做任何置换.
强转B,C时可以根据继承关系直接计算出偏移.
强转V时可以根据第一个offsetV算出
转为B再转C时,根据第二个offsetV算出最后一个vptrV的位置.

总之,引入一层间接,在上面加上约定就完了,所以访问V的数据成员会有额外开销,就是这个间接层.