1. 在派生类中调用基类虚函数(MFC的作法 )
class Derive :public Base <----继承
{
public:
virtual void vfunc()
{
cout<<"Derive vfunc"<<endl;
Base::vfunc(); <-----强制调用基类虚函数
};
void refunc()
{
cout<<"Derive refunc"<<endl;
Base::refunc(); <-----强制调用基类虚函数
};
};
2. 外部用户的调用方法
首先让我们在猜想一下基类与派生类的编译链接方法,我简单用示意图表示下:
派生对象this指针区
虚函数表
基类 位置偏移/指针
一级派生 位置偏移/指针
二级派生 位置偏移/指针
虚函数表区域
VFun1 真实指向
基类成员及方法区域
成员区
方法区(不占存贮)
一级派生成员及方法区域
成员区
方法区(不占存贮)
二级派生成员及方法区域
成员区
方法区(不占存贮)
关于虚函数表的填充原理,我在虚函数的原理中已经阐述得很清楚了,这里不再说明。
现在很关键的就是我们怎样才能随心所欲地调用这些区域的成员及方法,我举个例子
clas