探讨虚函数(一)

来源:互联网 发布:mac web压力测试工具 编辑:程序博客网 时间:2024/06/04 19:56

虚函数是C++中非常重要的一个特性,要熟练的掌握好C++的几大特性,虚函数的相关知识必不可少,下面就来分析一下虚函数表的结构,

 

class CBase
{
public:
 virtual void f1(){cout<<"CBase::f1()"<<endl;};
 virtual void f2(){cout<<"CBase::f2()"<<endl;};
 virtual void f3(){cout<<"CBase::f3()"<<endl;};
};

 

类CBase中定义了3个虚成员函数,

 

typedef void (*Fun)();    //定义函数指针


 CBase b;
 Fun pFun = NULL;
 //get the virtual address
 int* pAddress = (int*)(&b);
 cout<<"virtual address is : "<<(int*)(&b)<<endl;   // 虚函数表地址
 cout<<"the first function address is : "<<(int*)*((int*)(&b))<<endl;   //第一个函数地址
 pFun = (Fun)*(int*)*(int*)(&b);
 pFun();
 cout<<"the second function address is : "<<(int*)*(int*)(&b)+1<<endl;   //第二个函数地址
 pFun = (Fun)*((int*)*(int*)(&b)+1);
 pFun();

 

待续...

 

原创粉丝点击