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

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

  • 相关阅读:
    Memcached简介
    TP5 volist
    Getting command line access to PHP and MySQL running MAMP on OSX
    PHP use
    PHP 命名空间(namespace)
    mac 使用 pf 做端口转发
    微信测试帐号如何设置URL和Token,以及相关验证的原理
    ionic开发笔记
    Eclipse下配置Maven
    css引用第三方字体库
  • 原文地址:https://www.cnblogs.com/fuhang/p/8572056.html
Copyright © 2011-2022 走看看