遍历虚函数表调用函数

来源:互联网 发布:淘宝卖pdf电子书 编辑:程序博客网 时间:2024/06/04 18:59
#include <iostream.h>
class M
{
 public:
  virtual void f1(){cout<<"f1()"<<endl;}
  virtual void f2(){cout<<"f2()"<<endl;}
  virtual void f3(){cout<<"f3()"<<endl;}
  virtual void f4(){cout<<"f4()"<<endl;}
  virtual void f5(){cout<<"f5()"<<endl;}
  virtual void f6(){cout<<"f6()"<<endl;}
  virtual void f7(){cout<<"f7()"<<endl;}
  virtual void f8(){cout<<"f8()"<<endl;}
};
int main(){
 typedef void(*fun)(void);
 fun pf=NULL;
 M m;
 int* p;
 p=(int*)*(int*)(&m);
 while(*p!=NULL){
  pf=(fun)(int*)(*p);
  pf();
  p++;
 }
 return 0;
}