要求:
声明一个坦克类,继承自英雄类,新增属性:攻击力,重写攻击水晶函数,水晶下降血量为基础伤害(自定义)+坦克英雄攻击力
声明一个刺客类,继承自英雄类,新增属性:惩戒,重写攻击水晶函数,水晶下降血量为基础伤害(自定义)+惩戒量
定义全局函数fun,传入不同的英雄类对象,函数体内调用攻击水晶函数。
主测试文件中,完成相关函数的测试功
代码如下:
#include <iostream>
using namespace std;
int blood = 20000; //水晶血量
class Hero
{
protected:
string name; //英雄名字
int hp; //血量
public:
Hero() {}
Hero(string n,int b):name(n),hp(b){}
virtual ~Hero() {}
virtual void show() = 0;
};
class Tan : public Hero
{
protected:
int ags; //攻击力
public:
Tan() {}
Tan(string n,int b,int a):Hero(n,b),ags(a) {}
virtual ~Tan() {}
void show()
{
blood = blood - 200 - ags;
cout<<"登场英雄:"<<name<<endl;
cout<<"基础伤害:200"<<endl;
cout<<"攻击力:"<<ags<<endl;
cout<<"对水晶伤害为:"<<200+ags<<endl; //200为基础伤害
cout<<"水晶剩余血量:"<<blood<<endl;
}
};
class Assassin : public Hero
{
protected:
int pun; //惩戒伤害
public:
Assassin() {}
Assassin(string n,int b,int p):Hero(n,b),pun(p) {}
virtual ~Assassin() {}
void show()
{
blood = blood - 220 - pun;
cout<<"登场英雄:"<<name<<endl;
cout<<"基础伤害:220"<<endl;
cout<<"惩戒伤害:"<<pun<<endl;
cout<<"对水晶伤害为:"<<220+pun<<endl;
cout<<"水晶剩余血量:"<<blood<<endl;
}
};
void fun(Hero &h)
{
h.show();
}
int main()
{
Tan t("廉颇",8760,1100);
Assassin a("李白",4620,900);
fun(t);
cout<<"***************************************"<<endl;
fun(a);
return 0;
}
结果如图:
![](https://i-blog.csdnimg.cn/blog_migrate/93b002847aa35619d5533479d6e4c547.png)