C++类型定义
class A{
public:
virtual void f(){cout<<"A::f"<<endl;}
virtual void g(){cout<<"A::g"<<endl;}
};
class B: public A{
public:
void f(){cout<<"B::f"<<endl;}
void g(){cout<<"B::g"<<endl;}
};
typedef void (*FunP)(void*);
typedef FunP *VtbP;
int main(){
A a;
B b;
A *pa=&a;
(*(*(VtbP*)pa))(pa);//调用A::f
(*(*(VtbP*)pa+1))(pa);//调用A::g
pa=&b;
(*(*(VtbP*)pa))(pa);//调用B::f
(*(*(VtbP*)pa+1))(pa);//调用B::g
return 0;
}
不明白4个调用语句的最右边为何要(pa);写上(pa)的含义是什么?
[解决办法]
传进成员函数的隐含参数——this