• C++多态?


    以前看资料只是理解多态是“一个接口,多种调用” ,但是没有理解其真正意思,不明白具体咋么实现。

    不过看了这位博主的博客后对多态有了一些理解,链接:https://www.cnblogs.com/dormant/p/5223215.html

    多态我的理解是几个派生类继承了基类,比如定义father为基类,father中有一个方法为eat,son1,son2,son3 为派生类。派生类对基类中的eat方法进行了不同的重写,增加了许新多功能,但是三个派生类增加的功能不一样。现在我们要调用son1中的eat方法,有两种方式,一种是直接创建派生类son1的对象调用eat方法。另一种是通过基类father去调用派生类son1的eat方法。两种方式都可以实现son1的eat方法调用。但是如果我们用第一种方式,就有如下不方便:如果还想使用son2的eat方法,就必须新定义一个son2对象,调用son3中的eat,也必须新定义一个son2对象。这样就要定义三个对象。但是用第二种方式,你就只需创建一个father对象,就可以实现对几个派生类方法的调用。所以就实现了一个接口,多种调用。

    具体过程如下:

    class father
    {  
    public:  
        virtual void eat()  
        {  
            cout<<" father eat"<<endl;  
        }  
    };  
    class son1: class father 
    {  
    public:  
        void eat()  
        {  
            cout<<"son1 eat"<<endl;  
        }  
    };  
    class son2: class father 
    {  
    public:  
        void eat()  
        {  
            cout<<"son2 eat"<<endl;  
        }  
    };  
    class son3: class father 
    {  
    public:  
        void eat()  
        {  
            cout<<"son3 eat"<<endl;  
        }  
    };  
    father *a=nullptr
    int main(void)  
    {  
        a = new  son1();  
        a->eat();
        a=new son2();
        a->eat();
        a=new son3();
        a->eat();
        return 0;  
    }

      个人理解,有不对的地方请指正。

  • 相关阅读:
    oracle乱码问题
    fopen 參数具体解释
    图像特征提取方法:Bag-of-words
    事务应用-运行多条SQL语句
    八大排序算法总结
    svn经常使用命令具体解释(非常全,非常有用)
    android layout属性介绍
    ubuntu/linux mint 创建proc文件的三种方法(四)
    在归档模式下删除非系统文件的恢复
    解决使用DevExpress开发错误:未将对象引用设置到对象的实例
  • 原文地址:https://www.cnblogs.com/fuhang/p/8572056.html
Copyright © 2020-2023  润新知