使用C实现多态

什么是多态?
简单地说就是主函数访问继承类Derive的成员函数时,如果Derive类存在此函数,就直接调用它;而如果Derive类没有,但是Base类有此函数,则间接调用父类的那个函数。
简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针

C也可以实现多态。不过这种多态和C++中的多态有所不同,此处不允许同名的成员函数。但是,我们仍然可以实现一种模拟的多态。

#include"Base.h"//由于用到了多态,这里子类的所有基类的头文件都要显式地添加。如果只需要继承的话是不用这样的。
#include"Derive.h"
 
//动态继承描述表宏,带一个变量用于(内联地)传递对象。
#defineDERIVE_BASE(DV)(DV.m_base)

int main()
{
    Base* bs;
    Derive dv;
    bs = &dv;    //将子类类型的指针赋值给父类类型的指针
    dv.m_val = 12;
    DERIVE_BASE(dv).m_val = 0XAFff;

    Derive_Fun(bs); //模拟通过指向派生类的基类指针访问派生类成员函数

    Base_Fun(&DERIVE_BASE(dv));//这样我们可以访问这个子类所继承的基类的Fun函数

    Base_Fun(bs);//模拟通过指向派生类的基类指针访问基类成员函数

    getchar();
    return 0;
}

❤️


5804969-64ca917b7b70f881.jpg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值