zoukankan      html  css  js  c++  java
  • 继承和多类的基础(C++)

    代码一:

    #include <iostream>
    using namespace std;


    class Fish
    {
    public:
    bool isFreshWaterFish;

    void Swim()
    {
    if (isFreshWaterFish)
    cout << "Swims in lake" << endl;
    else
    cout << "Swims in sea" << endl;
    }
    };

    class Tuna: public Fish
    {
    public:
    Tuna()
    {
    isFreshWaterFish = false;
    }
    };

    class Carp: public Fish
    {
    public:
    Carp()
    {
    isFreshWaterFish = true;
    }
    };

    int main()
    {
    Carp myLunch;
    Tuna myDinner;

    cout << "Getting my food to swim" << endl;

    cout << "Lunch: ";
    myLunch.Swim();

    cout << "Dinner: ";
    myDinner.Swim();

    return 0;
    }

    通过公有继承,Tuna和Carp类将暴露基类共有方法swim

    代码二:

    #include <iostream>
    using namespace std;

    class Fish
    {
    public:
    void Swim()
    {
    cout << "Fish swims!" << endl;
    }
    };

    class Tuna:public Fish
    {
    public:
    // override Fish::Swim
    void Swim()
    {
    cout << "Tuna swims!" << endl;
    }
    };

    void MakeFishSwim(Fish& InputFish)
    {
    // calling Fish::Swim
    InputFish.Swim();
    }

    int main()
    {
    Tuna myDinner;

    // calling Tuna::Swim
    myDinner.Swim();

    // sending Tuna as Fish
    MakeFishSwim(myDinner);

    return 0;
    }

    其中void MakeFishSwim(Fish& InputFish)将传入都看作Fish基类

    代码三:

    class Fish
    {
    public:
    virtual void swim()
    {
    cout <<"Fish swim!!!"<<endl;
    }
    };
    class Tuna :public Fish
    {
    public:
    void swim()
    {
    cout << "Tuna swim in the sea" << endl;

    }
    };

    class Carp :public Fish
    {
    public:
    void swim()
    {
    cout << "Carp can swim in the lake" << endl;
    }
    };

    void MakeFishSwim(Fish&inputFish)
    {
    //
    inputFish.swim();

    }
    int main()
    {
    Carp myLunch;
    Tuna myDinner;

    MakeFishSwim(myDinner);
    MakeFishSwim(myLunch);

    system("pause");
    return 0;

    }

    其中virtual 虚函数的优先级在派生类之后,这是典型的降级

  • 相关阅读:
    xsos:一个在Linux上阅读SOSReport的工具
    RHEL sosreport
    sosreport -a --report
    环境变量
    读研重要的是要明白你自己要干什么, 不能等导师来告诉你你应该干什么. 研究生的优势在于理论功底深厚, 思维具有穿透力,
    awk sed grep 常用命令
    如何删除文件中的空行
    Vim删除空行
    WPS 2010 页眉下方添加下划线
    Android开发环境搭建
  • 原文地址:https://www.cnblogs.com/1994xlai/p/11911908.html
Copyright © 2011-2022 走看看