class hero
{
protected:
char name[128];
double blood;
public:
virtual double attack_crystal()=0;
hero(char* n,double b)
{
strcpy(name,n);
blood=b;
}
virtual ~hero(){};
};
class tank:public hero
{
protected:
double attack;
public:
double attack_crystal()
{
double health;
health=100+attack;
cout<<health<<endl;
return health;
}
tank(char* n,double b,double a):hero(n,b),attack(a){};
~tank(){};
};
class assassin:public hero
{
protected:
double discipline;
public:
double attack_crystal()
{
double health;
health=100+discipline;
cout<<health<<endl;
return health;
}
assassin(char* n,double b,double d):hero(n,b),discipline(d){};
~assassin(){};
};
void fun(hero& h)
{
h.attack_crystal();
}
int main()
{
tank k("aaa",100,90);
assassin s("bbb",100,100);
fun(k);
fun(s);
}
C++编程:英雄类与坦克、刺客子类的设计,
文章定义了一个名为hero的基类,包含姓名和血量属性,以及一个纯虚函数attack_crystal。从hero派生出两个子类:tank和assassin,分别增加attack和discipline属性,并重写了attack_crystal函数来计算各自的健康值。在main函数中,创建了tank和assassin对象,并调用fun函数执行特定的attack_crystal方法。
613

被折叠的 条评论
为什么被折叠?



