大挪耗

c++多态的应用场景

#include "iostream"
using namespace std;

class Hero
{
public:
    int viability;//生存能力
    int attack;//攻击伤害
    virtual void skill1(){cout<<"英雄释放了一技能.\n";}
    virtual void skill2(){cout<<"英雄释放了二技能.\n";}
    virtual void uskill(){cout<<"英雄释放了大招.\n";}
};

class XS:public Hero//西施派生类
{
public:
    void skill1(){cout<<"西施释放了一技能.\n";}
    void skill2(){cout<<"西施释放了二技能.\n";}
    void uskill(){cout<<"西施释放了大招.\n";}
};

class LB:public Hero//
{
public:
    void skill1(){cout<<"李白释放了一技能.\n";}
    void skill2(){cout<<"李白释放了二技能.\n";}
    void uskill(){cout<<"李白释放了大招.\n";}
};

class HX:public Hero//
{
public:
    void skill1(){cout<<"韩信释放了一技能.\n";}
    void skill2(){cout<<"韩信释放了二技能.\n";}
    void uskill(){cout<<"韩信释放了大招.\n";}
};


int main()
{
    //根据用户选择英雄,施展一技能,二技能和大招.
    int id=0;//英雄的id.
    cout<<"请输入英雄(1-西施,2,-韩信,3-李白):";
    cin>>id;

//    if(id==1)//西施
//    {
//        XS h;
//        h.skill1();
//        h.skill2();
//        h.uskill();
//    } else if(id==2)//韩信
//    {
//     HX h;
//     h.skill1();
//     h.skill2();
//     h.uskill();
//    } else if(id==3)//李白
//    {
//        LB h;
//        h.skill1();
//        h.skill2();
//        h.uskill();
//    }

    Hero* ptr=nullptr;
    if(id==1)//1-西施
    {
        ptr=new XS;
    } else if(id==2)//2-韩信
    {
        ptr=new HX;
    } else if(id==3)//3-李白
    {
        ptr=new LB;
    }
    if(ptr!= nullptr)
    {
        ptr->skill1();
        ptr->skill2();
        ptr->uskill();
        delete ptr;
    }
}

输出:请输入英雄(1-西施,2,-韩信,3-李白):2
韩信释放了一技能.
韩信释放了二技能.
韩信释放了大招.


已发布

分类

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

发表回复

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