使用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实现多态

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