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

  • 相关阅读:
    opencv访问图像像素
    利用chrome浏览器的proxy switchy扩展智能切换代理
    一些linux命令【ubuntu】
    如何从 Ubuntu 10.04 升级到 10.10
    关于“无法获得排它锁 ”的解决办法
    【ubuntu】Grub2配置详解(转)
    BibTeX使用介绍
    【ubuntu】imagemagick用法
    ubuntu环境下安装OpenCV
    安装wordpress
  • 原文地址:https://www.cnblogs.com/alazalazalaz/p/4431585.html
Copyright © 2011-2022 走看看