zoukankan      html  css  js  c++  java
  • C++——多态

    1. 多态定义的构成条件

    多态是在不同继承关系的类对象,去调同一函数,产生了不同的行为。

    就是说,有一对继承关系的两个类,这两个类里面都有一个函数且名字、参数、返回值均相同,然后我们通过调用函数来实现不同类对象完成不同的事件。



    //多态的思想
    //面向对象3大概念
    //封装: 突破c函数的概念....用类做函数参数的时候,可以使用对象的属性 和对象的方法 
    //继承: A B 代码复用
    //多态 : 可以使用未来...
    
    
    //多态很重要
    //实现多态的三个条件
    //C语言 间接赋值 是指针存在的最大意义
    //是c语言的特有的现象 (1 定义两个变量  2 建立关联  3 *p在被调用函数中去间接的修改实参的值)
    
    //实现多态的三个条件
    //1 要有继承 
    //2 要有虚函数重写
    //3 用父类指针(父类引用)指向子类对象....

    #include <iostream> using namespace std; //HeroFighter AdvHeroFighter EnemyFighter 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; } }; //多态威力 //1 PlayObj给对象搭建舞台 看成一个框架 //15:20 void PlayObj(HeroFighter *hf, EnemyFighter *ef) { //不写virtual关键字 是静态联编 C++编译器根据HeroFighter类型,去执行 这个类型的power函数 在编译器编译阶段就已经决定了函数的调用 //动态联编: 迟绑定: //在运行的时候,根据具体对象(具体的类型),执行不同对象的函数 ,表现成多态. if (hf->power() > ef->attack()) //hf->power()函数调用会有多态发生 { printf("主角win "); } else { printf("主角挂掉 "); } } 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 "); } else { printf("主角挂掉 "); } if (Advhf.power() > ef.attack()) { printf("Adv 主角win "); } else { printf("Adv 主角挂掉 "); } cout<<"hello..."<<endl; system("pause"); return ; }
  • 相关阅读:
    android http通信——HttpURLConntection
    Android UI设计秘笈
    android文字滚动
    android半透叠加对照表
    gcc编译问题记录
    安装AIX补丁集
    php安装过程记录
    参加计算机大会了
    Linux平台mysql的安装配置
    oracle 故障案例排查
  • 原文地址:https://www.cnblogs.com/long5683/p/11402424.html
Copyright © 2011-2022 走看看