vptr是否位于对象的开头?

sha*_*oth 3 c++ dynamic-cast virtual-functions rtti visual-c++

根据MSDN,__ RTTynamicCast()函数用于dynamic_cast在Visual C++中实现.其参数LONG VfDelta之一被描述为"对象中虚函数指针的偏移".

AFAIK vptr始终位于对象的起始位置,因此偏移量始终为零.我仔细研究了使用的各种代码片段的反汇编,dynamic_cast我从来没有见过任何东西,只有零被传递代替这个参数.

是否vptr位于任何地方,但物体开始?这种偏移可以是零吗?

And*_*rew 5

在多重继承的情况下,有多个vptr,你需要offset.看看这里:http://hacksoflife.blogspot.com/2007/02/c-objects-part-3-multiple-inheritance.html