#include<iostream>
#include<cmath>
#define _CRT_SECURE_NO_WARNINGS     //这个宏定义最好要放到.c文件的第一行
#pragma warning(disable:4996)
using namespace std;
class Fish
{
public:
    Fish(int w)
    {
        weight = w;
        point = 0;
    }
    virtual int Point() const
    {
        return 0;
    }
protected:
    int weight;
    int point;
 
};
class Octopus :public Fish
{
public:
    Octopus(int w) :Fish(w)
    {
 
    }
    virtual int Point() const
    {
        cout << "cat fish Octopus" << endl;
        return weight * 2;
    }
 
private:
 
 
};
class Turtle :public Fish
{
public:
    Turtle(int w) : Fish(w)
    {
 
    }
    virtual int Point() const
    {
        cout << "cat fish Turtle" << endl;
        return 500;
    }
private:
 
private:
 
};
class Whale :public Fish
{
public:
    Whale(int w) : Fish(w)
    {
 
    }
    virtual int Point() const
    {
        cout << "cat fish Whale" << endl;
        return 200;
    }
private:
 
};
class Shark :public Fish
{
public:
    Shark(int w) : Fish(w)
    {
 
    }
    virtual int Point() const
    {
        cout << "cat fish Shark" << endl;
        return -(weight * 5);
    }
};
class Cat
{
public:
    Cat(int le = 0, int e = 0) {
        level = le;
        exp = e;
    }
    void CatchFish(Fish& f)              //虚函数调用传入对象确定怎么积累经验升级
    {
        int t = f.Point();
 
        if (t > 0) {
            level += t / 500;
            exp = t % 500;
 
        }
        else
        {
            exp += t;
            if (exp < 0)exp = 0;
        }
        cout << "level:" << level << ' ' << "exp" << exp << endl;
    }
private:
    int level;
    int exp;
 
};
int main()
{
    Cat c;
    Turtle t(20);
    Octopus o(60);
    Shark s(20);
 
    c.CatchFish(t);
    c.CatchFish(o);
 
    c.CatchFish(s);
 
 
}

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐