zoukankan      html  css  js  c++  java
  • 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;  
    }

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

  • 相关阅读:
    背水一战 Windows 10 (26)
    背水一战 Windows 10 (25)
    背水一战 Windows 10 (24)
    背水一战 Windows 10 (23)
    背水一战 Windows 10 (22)
    背水一战 Windows 10 (21)
    背水一战 Windows 10 (20)
    背水一战 Windows 10 (19)
    背水一战 Windows 10 (18)
    背水一战 Windows 10 (17)
  • 原文地址:https://www.cnblogs.com/fuhang/p/8572056.html
Copyright © 2011-2022 走看看