作业
声明一个英雄类,成员属性:英雄名字、血量,定义成员函数攻击水晶(纯虚函数)
声明一个坦克类,继承自英雄类,新增属性:攻击力,重写攻击水晶函数,水晶下降血量为基础伤害(自定义)+坦克英雄攻击力
声明一个刺客类,继承自英雄类,新增属性:惩戒,重写攻击水晶函数,水晶下降血量为基础伤害(自定义)+惩戒量
定义全局函数fun,传入不同的英雄类对象,函数体内调用攻击水晶函数。
主测试文件中,完成相关函数的测试功能
#include <iostream>
using namespace std;
class Character
{
protected:
string name;
double blood;
public:
static double base_blood; //水晶血量
Character() {} //无参构造
Character(string n, double b):name(n), blood(b) {} //有参构造
virtual ~Character() {} //虚析构函数
virtual void attack_base() = 0; //纯虚函数
};
class Tank : public Character
{
protected:
double ATK;
public:
Tank() {} //无参构造
Tank(string n, double b, double A):Character(n,b), ATK(A) {} //有参构造
~Tank() {} //虚析构函数
void attack_base() override //重写
{
base_blood -= (ATK + 500); //500为基础伤害
cout << name << "对水晶的伤害:" << 500+ATK << endl;
cout << "水晶剩余血量:" << base_blood << endl;
}
};
class Assassin : public Character
{
protected:
double Discipline;
public:
Assassin() {} //无参构造
Assassin(string n, double b, double D):Character(n,b), Discipline(D) {} //有参构造
~Assassin() {} //虚析构函数
void attack_base() override //重写
{
base_blood = Discipline + 500; //500为基础伤害
cout << name << "对水晶的伤害:" << 500+Discipline << endl;
cout << "水晶剩余血量:" << base_blood << endl;
}
};
double Character::base_blood = 40000; //类中静态成员变量,需要在全局处进行定义
void fun(Character &r)
{
r.attack_base();
}
int main()
{
cout << "水晶总血量:" << Character::base_blood << endl;
Tank t("xiangyu", 5000, 700);
fun(t);
Assassin a("hanxin", 4000, 1200);
fun(a);
return 0;
}
测试结果如下: