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;  
    }

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

  • 相关阅读:
    Discuz!X/数据库操作方法
    使用 HTML5, javascript, webrtc, websockets, Jetty 和 OpenCV 实现基于 Web 的人脸识别
    ECShop模板原理
    ecshop中smarty最常用的6大基本语法
    Laravel学习笔记
    Laravel的目录结构分析
    Intellij Idea 常用快捷键
    Code optimization and organization in Javascript / jQuery
    Bossies 2015: The Best of Open Source Software Awards
    解决jetty runner锁定js
  • 原文地址:https://www.cnblogs.com/fuhang/p/8572056.html
Copyright © 2011-2022 走看看