题目:
声明一个英雄类,成员属性:英雄名字、血量,定义成员函数攻击水晶(纯虚函数)
声明一个坦克类,继承自英雄类,新增属性:攻击力,重写攻击水晶函数,水晶下降血量为基础伤害(自定义)+坦克英雄攻击力
声明一个刺客类,继承自英雄类,新增属性:惩戒,重写攻击水晶函数,水晶下降血量为基础伤害(自定义)+惩戒量
定义全局函数fun,传入不同的英雄类对象,函数体内调用攻击水晶函数。
主测试文件中,完成相关函数的测试功能
代码:
#include <iostream>
using namespace std;
int diamond_blood=1000;
class hero
{
protected:
string name;
int hero_blood;
public:
hero() {}
hero(string n,int b):name(n),hero_blood(b) {}
~hero() {}
virtual void aggress()=0;
};
class tank :public hero
{
protected:
int aggressivity;
public:
tank() {}
tank(string n,int b,int a):hero(n,b),aggressivity(a){}
~tank() {}
void aggress() override
{
diamond_blood=diamond_blood-55-aggressivity;
}
};
class assassion :public hero
{
protected:
int chasten;
public:
assassion() {}
assassion(string n,int b,int c):hero(n,b),chasten(c){}
~assassion() {}
void aggress() override
{
diamond_blood=diamond_blood-76-chasten;
}
};
void fun(hero &a1)
{
a1.aggress();
cout<<"diamond_blood="<<diamond_blood<<endl;
}
int main()
{
tank a("亚瑟",220,100);
assassion b("阿轲",150,200);
fun(a);
fun(b);
return 0;
}
运行结果:
![](https://img-blog.csdnimg.cn/img_convert/590f5453beaa0d93ed2b9bc560bf6e1b.png)