码迷,mamicode.com
首页 > 其他好文 > 详细

虚函数表指针位置

时间:2015-07-26 17:08:16      阅读:167      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!