作业:
声明一个英雄类,成员属性:英雄名字、血量,定义成员函数攻击水晶(纯虚函数)
声明一个坦克类,继承自英雄类,新增属性:攻击力,重写攻击水晶函数,水晶下降血量为基础伤害(自定义)+坦克英雄攻击力声明一个刺客类,继承自英雄类,新增属性:惩戒,重写攻击水晶函数,水晶下降血量为基础伤害(自定义)+惩戒量
定义全局函数fun,传入不同的英雄类对象,函数体内调用攻击水晶函数。
主测试文件中,完成相关函数的测试功能
代码如下:
#include <iostream>
using namespace std;
//英雄类
class hero
{
private:
string name; //英雄名字
int blood; //血量
public:
hero(){}
hero(string n,int b):name(n),blood(b){};
virtual ~hero(){cout<<"hero::析构函数"<<endl;};
virtual void attack(int &bb) = 0;
};
//坦克类
class tank:public hero
{
private:
int ATK; //攻击力
int harm; //基础伤害
public:
tank(){}
tank(string n,int b,int a,int h):hero(n,b),ATK(a),harm(h){};
~tank(){cout<<"tank::析构函数"<<endl;};
void attack(int &bb) override
{
bb = bb-harm-ATK;
cout<<"基础伤害"<<" = "<<harm<<" 坦克攻击力 = "<<ATK<<endl;
cout<<"水晶血量为:"<<bb<<endl;
}
};
//刺客类
class assassin:public hero
{
private:
int chasten; //惩戒
int harm; //基础伤害
public:
assassin(){}
assassin(string n,int b,int c,int h):hero(n,b),chasten(c),harm(h){};
~assassin(){cout<<"assassin::析构函数"<<endl;};
void attack(int &bb) override
{
bb = bb-harm-chasten;
cout<<"基础伤害"<<" = "<<harm<<" 惩戒量 = "<<chasten<<endl;
cout<<"水晶血量为:"<<bb<<endl;
}
};
void fun(hero &h)
{
static int booldd = 10000;
h.attack(booldd);
}
int main()
{
tank t1("zhangsan",500,60,100);
fun(t1);
assassin a1("lisi",600,70,100);
fun(a1);
return 0;
}
代码执行结果: