#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
西施释放了一技能。
西施释放了二技能。
西施释放了三技能。

发表回复