虚函数表

2018-06-17 21:21:06来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

 

class BaseClass
{
public:
    BaseClass();
    virtual ~BaseClass();
    virtual void f1();
    virtual void f2();
    int v1;
    int v2;
};
    typedef void (*F)();
    BaseClass * b = new BaseClass();
    int * p = (int *)b;
    //获取vptr指针的值
    int * vptr = (int *)p[0];
    //调用vtbl中的函数
    F f =  (F)vptr[2];
    f();

 

设置断点后查看指针b指向的内存中的内容

可以看到vptr被安插在了第一的位置,后面才是成员变量的初始化

vptr指向一个数组,数组中的成员为虚函数的地址,通过取出虚函数的地址值转为函数指针后,可以直接调用虚函数

 


			   
			   

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:枚举 输入流重载>> C++

下一篇:游戏服务器设计之任务系统