您的位置:首页 > 其它

类中的虚函数,通过指针获得vtable内容,然后通过函数指针指向虚函数并调用

2007-10-05 18:43 393 查看
#include "stdafx.h"

class A
{
virtual void FunA(){ printf( "liangchao/r/n" ); }
virtual void FunB(){ printf( "liangchao1/r/n" ); }
};

typedef void (*pFunA)();

int _tmain(int argc, _TCHAR* argv[])
{
A a;
pFunA pfunA, pfunB;

int p = (int)(&a);
int i = *( (int*)p );//i是指向vtable的指针
i = *((int*)i);//i是函数FunA的地址

int j = *( (int*)p );
j = j +4;
j = *((int*)j);//i是函数FunA的地址

//void *q = (void*)(*p);
pfunA = (void (*)())( i );
pfunB = (void (*)())( j );
pfunA();
pfunB();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐