首页 > 其他 > 详细

虚函数表指针位置

时间:2015-07-26 17:05:55      阅读:289      评论:0      收藏:0      [点我收藏+]
一般VC和BCB是将vPtr放在类实例的前四个字节,GCC是放在末尾。在某些情况下需要考虑表指针的位置,比如序列化的时候。
其实只需将类实例的首地址与类的第一个成员变量地址相比较就可得知虚表指针的位置。
class A
{
      A(void){}
      virtual void Foo(void){}
};
 
int main()
{
     A a;
     char *p1 = reinterpret_cast<char*>(&a);
     char *p2 = reinterpret_cast<char*>(&a.n);
     if(p1 == p2)
     {
        cout<<"vPtr is in the end of class instance!"<<endl;
     }else
     {
        cout<<"vPtr is in the head of class instance!"<<endl;
     }
     return 1;
} 

 

虚函数表指针位置

原文:http://www.cnblogs.com/leijiangtao/p/4677854.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!