虚函数表
1 typedef void(*F)(); 2 3 class A{ 4 public: 5 F** vptr;//指向虚函数表的指针,初始化于构造函数 6 int x=1; 7 A():vptr((F**)this){} 8 virtual void f0(){puts("f0");} 9 virtual void f1(){printf("f1=%d\n",x);} 10 }; 11 12 int main(){ 13 A a; 14 a.f0(); 15 a.f1(); 16 17 F* vtbl=*a.vptr;//虚函数表,是个数组,数组每个元素是一个函数指针 18 vtbl[0]();//(*a.vptr)[0](); 19 vtbl[1]();//(*a.vptr)[1]();输出x为不确定值,因为没有传入this吗? 20 }