#include "iostream"//包含头文件
#include "memory"
using namespace std;
class Hero //英雄基类
{
public:
int viability;//生存能力、
int attack;//攻击伤害、
virtual void skill1(){
cout<<"英雄释放了一技能.\n";
}
virtual void skill2(){
cout<<"英雄释放了二技能.\n";
}
virtual void skill3(){
cout<<"英雄释放了三技能.\n";
}
};
class XS:public Hero //西施派生类
{
public:
void skill1(){cout<<"西施释放了一技能。\n";}
void skill2(){cout<<"西施释放了二技能。\n";}
void skill3(){cout<<"西施释放了三技能。\n";}
};
class HX:public Hero //韩信派生类
{
public:
void skill1(){cout<<"韩信释放了一技能。\n";}
void skill2(){cout<<"韩信释放了二技能。\n";}
void skill3(){cout<<"韩信释放了三技能。\n";}
};
class LB:public Hero //李白派生类
{
public:
void skill1(){cout<<"李白释放了一技能。\n";}
void skill2(){cout<<"李白释放了二技能。\n";}
void skill3(){cout<<"李白释放了三技能。\n";}
};
int main(){
//根据用户选择的英雄,施展一技能,二技能和大招。
int id=0;//英雄的id.
cout<<"请输入英雄(1-西施;2-韩信;3-李白;)";
cin>>id;
//创建基类指针,让他指向派生类,用基类指针调用派生类的成员函数.
//Hero* ptr= nullptr;
unique_ptr<Hero> ptr;
if (id==1){
//1-西施
//ptr=new XS;
ptr=unique_ptr<Hero>(new XS);
} else if(id==2){
//2-韩信;
//ptr=new HX;
ptr=unique_ptr<Hero>(new HX);
}else if (id==3){
//3-李白
//ptr=new LB;
ptr=unique_ptr<Hero>(new LB);
}
if(ptr!= nullptr){
ptr->skill1();
ptr->skill2();
ptr->skill3();
}
}
请输入英雄(1-西施;2-韩信;3-李白;)1
西施释放了一技能。
西施释放了二技能。
西施释放了三技能。
发表回复