一个C++类中如果有虚函数,那么这个类生成的对象中必然包含了一张虚表来存储这些虚函数的地址; 这个对象中的前4个字节必然是虚表的地址;
int *p = ((int*)*((int*)&obj));//得到虚表首地址
((void (*)()) ((int*) (*(p+0)) ))();//得到相应的虚函数,其中(void (*)())是你虚函数的指针类型
一个C++类中如果有虚函数,那么这个类生成的对象中必然包含了一张虚表来存储这些虚函数的地址; 这个对象中的前4个字节必然是虚表的地址;
int *p = ((int*)*((int*)&obj));//得到虚表首地址
((void (*)()) ((int*) (*(p+0)) ))();//得到相应的虚函数,其中(void (*)())是你虚函数的指针类型