使用C实现多态

作者: NiceBlueChai | 来源:发表于2017-10-13 11:37 被阅读43次

什么是多态?
简单地说就是主函数访问继承类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;
}

❤️


相关文章

  • 使用C实现多态

    什么是多态?简单地说就是主函数访问继承类Derive的成员函数时,如果Derive类存在此函数,就直接调用它;而如...

  • 深刻剖析之c++博客文章

    三大特性 封装、继承、多态 多态 C++ 虚函数表解析C++多态的实现原理 介绍了类的多态(虚函数和动态/迟绑定)...

  • C++ 20 使用concept 实现静态多态

    本例演示使用C++ 20提供的concept 实现简单的静态多态。代码如下,CMakeLists.txt main...

  • 如果你还不理解多态,不妨看看我的

    多态(Objective-C) 一、多态的概念 场景1: 多态:在程序员的世界,多态就是相同的方法,不同的实现。 ...

  • 实现golang语言的多态

    如何实现golang语言的多态? C++里面有多态是其三大特性之一,那么golang里面的多态我们该怎么实现? g...

  • Swift 多态实现探究

    多态 父类指针指向子类对象 Swift 中多态的实现类似于 c++ 中的虚表 OC 多态实现利用的是 Runtim...

  • 多态的C++实现

    多态的C++实现 1 多态的原理 什么是多态?多态是面向对象的特性之一,只用父类指针指向子类的对象。 1.1 多态...

  • Ruby多态函数的常用实现方法

    Ruby不支持类似C++的多态。 可以使用他的反射方法实现。 例如 def some_fn option ca...

  • 深入研究C++多态(虚函数和虚继承)

    面向对象的三大特性是封装、继承和多态。多态是非常重要的一个特性,C++多态基于虚函数和虚继承实现,本文将完整挖掘C...

  • C++ 多态的实现和原理

    多态的实现虚函数原理 一、在编译期间实现多态 多态是指在不同的条件下表现出不同的状态,C++中通过重载函数的方法可...

网友评论

    本文标题:使用C实现多态

    本文链接:https://www.haomeiwen.com/subject/pbczyxtx.html