基类虚函数的强制调用

本文探讨了在派生类中如何强制调用基类的虚函数,通过MFC的示例展示了内部调用和外部用户调用基类虚函数的不同方式。文章分析了虚函数表的工作原理,并通过代码示例解释了不同调用方式导致的输出差异,帮助理解C++的多态行为。
摘要由CSDN通过智能技术生成
 

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值