• c++之虚函数virtual , overriding , overwrite


    先来看下普通的继承:

    class Instrument{
    public:
        void play() const{
            cout<<"Instrument::play"<<endl;
        }
    };
    
    class Wind : public Instrument{
    public:
        void play() const{
            cout<<"Wind::play"<<endl;
        }
    };
    
        Instrument* instrumentObj = new Instrument();
        instrumentObj->play();        //output: Instrument::play
    
        Wind* windObj = new Wind();
        windObj->play();            //output: Wind::play
    
        Instrument* windInsObj = new Wind();    //子类对象指向父类的指针
        windInsObj->play();            //output: Instrument::play
    
        //Wind* InsWindObj = new Instrument();// wrong !父类对象不能指向子类的指针    

    以下是虚函数的继承:

    class Instrument{
    public:
        virtual void play() const{
            cout<<"Instrument::play"<<endl;
        }
    };
    
    class Wind : public Instrument{
    public:
        void play() const{
            cout<<"Wind::play"<<endl;
        }
    };
      Instrument* instrumentObj = new Instrument();
        instrumentObj->play();        //output: Instrument::play
    
        Wind* windObj = new Wind();
        windObj->play();            //output: Wind::play
    
        Instrument* windInsObj = new Wind();    //子类对象指向父类的指针
        windInsObj->play();            //output: Wind::play
    
        //Wind* InsWindObj = new Instrument();// wrong !父类对象不能指向子类的指针

    纯虚函数和抽象类

    纯虚函数使用关键字virtual 并在函数最后加上=0.eg:virtual void fun()=0;

  • 相关阅读:
    2019-6-23-win10-uwp-未给任务-GenerateAppxPackageRecipe-的必需参数-AppxManifestXml-赋值
    2018-8-17-C#-从零开始写-SharpDx-应用-控制台创建-Sharpdx-窗口
    QToolBox
    QListWidget
    宽字节 多字节 mbstowcs wcstombs
    va_start可变参数函数
    c语言二进制、八进制、十六进制
    文件锁 flock/fcntl
    volatile和锁
    串口应用程序
  • 原文地址:https://www.cnblogs.com/alazalazalaz/p/4431585.html
Copyright © 2020-2023  润新知