继承与多态
来源:互联网 发布:德军步兵班 知乎 编辑:程序博客网 时间:2024/06/16 20:48
#include <iostream>using namespace std;class HeroFighter{public: virtual int power() //C++会对这个函数特殊处理 { return 10; }};class EnemyFighter{public: int attack() { return 15; }};class AdvHeroFighter : public HeroFighter{public: virtual int power() { return 20; }};class AdvAdvHeroFighter : public HeroFighter{public: virtual int power() { return 30; }};void PlayObj(HeroFighter *hf, EnemyFighter *ef){ //不写virtual关键字 是静态联编 C++编译器根据HeroFighter类型,去执行 这个类型的power函数 在编译器编译阶段就已经决定了函数的调用 //动态联编: 迟绑定: //在运行的时候,根据具体对象(具体的类型),执行不同对象的函数 ,表现成多态. if (hf->power() > ef->attack()) //hf->power()函数调用会有多态发生 { printf("主角win\n"); } else { printf("主角挂掉\n"); }}///面向对象3大概念//封装: 用类做函数参数的时候,可以使用对象的属性 和对象的方法 //继承: 代码复用//多态 : 可扩展//实现多态的三个条件//1 要有继承 //2 要有虚函数重写//3 用父类指针(父类引用)指向子类对象....void main(){ HeroFighter hf; AdvHeroFighter Advhf; EnemyFighter ef; AdvAdvHeroFighter advadvhf; PlayObj(&hf, &ef); PlayObj(&Advhf, &ef); PlayObj(&advadvhf, &ef) ; cout<<"hello..."<<endl; system("pause");}void main1401(){ 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"); } cout<<"hello..."<<endl; system("pause"); return ;}
0 0
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 多态与继承
- 继承与多态
- 【CSS基础】关于content
- Full Tank? UVA
- 石楠小札
- 高效程序员的 7 个共同特征
- Android 小笔记 dp转px、sp转px、px转dp、px转sp
- 继承与多态
- 我的面经1
- TCP的三次握手与四次挥手
- SQLite入门介绍(二)
- 二叉树的路径和
- js随机生成模拟数据
- 【IMWel训练作业】vue select component
- TurtleBot的SLAM地图构建
- Android studio怎么上传代码到Conding