多态案例

    xiaoxiao2021-03-25  106

    //多态的威力 //1 playobj给对象搭建一个舞台,看成一个框架 //多态的思想 //封装   突破c函数的概念。。。 用类做函数参数时可以使用对象的属性和方法 //继承 A B 代码复用 //多态  可以使用未来 //多态很重要 //实现多态的三个条件 //C语言间接赋值是指针存在的最大意义 //是C语言特有的现象1、定义两个变量;2、建立关联、 3、*p在被调用函数中间接调用实参的值 //实现多态的三个条件 //一、要有继承;二、要有虚函数重写;三、用父类指针(引用)指向子类对象

    #include<iostream> using namespace std; class HeroFighter { public: virtual int power() { return 10; } protected: private: }; class EnemyFighter { public: virtual int attack() { return 15; } protected: private: }; class AdvHeroFighter : public HeroFighter { public: virtual int power() { return 20; } protected: private: }; class AdvAdvHeroFighter : public HeroFighter { public: virtual int power() { return 20; } }; //多态的威力 //1 playobj给对象搭建一个舞台,看成一个框架 //多态的思想 //封装 突破c函数的概念。。。 用类做函数参数时可以使用对象的属性和方法 //继承 A B 代码复用 //多态 可以使用未来 //多态很重要 //实现多态的三个条件 //C语言间接赋值是指针存在的最大意义 //是C语言特有的现象1、定义两个变量;2、建立关联、 3、*p在被调用函数中间接调用实参的值 //实现多态的三个条件 //一、要有继承;二、要有虚函数重写;三、用父类指针(引用)指向子类对象 void playobj(HeroFighter *hf,EnemyFighter *ef) { if (hf->power() > ef->attack())//hf->power()这个函数调用产生多态调用 { printf("主角win\n"); } else { printf("主角挂了\n"); } } int main01() { HeroFighter hf; AdvHeroFighter Advhf; EnemyFighter ef; if (hf.power() > ef.attack()) { printf("主角win\n"); } else { printf("主角挂了\n"); } if (Advhf.power() > ef.attack()) { printf("ADv主角win\n"); } else { printf("ADv主角挂了\n"); } system("pause"); return 0; } int main() { HeroFighter hf; AdvHeroFighter Advhf; EnemyFighter ef; AdvAdvHeroFighter AdvAdvhf; playobj(&hf,&ef); playobj(&Advhf,&ef); playobj(&AdvAdvhf,&ef); system("pause"); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-14399.html

    最新回复(0)