大挪耗

c++智能指针unqiue_ptr多态

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


已发布

分类

可以收藏大挪耗一下。下载麻烦点城通网盘,站长保证下载速度,不会限速的,放心点就是了;分卷,安卓下载为txt:程序下载为url,不会下载参考不会下载。如果你想让本站活的久一点,请直接捐助

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注