首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++门类定义

2013-08-01 
C++类型定义class A{public:virtual void f(){coutA::fendl}virtual void g(){coutA::gendl

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

热点排行