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 ;
}
}; class EnemyFighter
{
public:
int attack()
{
return ;
}
}; class AdvHeroFighter : public HeroFighter
{
public:
virtual int power()
{
return ;
}
}; class AdvAdvHeroFighter : public HeroFighter
{
public:
virtual int power()
{
return ;
}
}; //多态威力
//1 PlayObj给对象搭建舞台 看成一个框架
//15:20
void PlayObj(HeroFighter *hf, EnemyFighter *ef)
{
//不写virtual关键字 是静态联编 C++编译器根据HeroFighter类型,去执行 这个类型的power函数 在编译器编译阶段就已经决定了函数的调用
//动态联编: 迟绑定: //在运行的时候,根据具体对象(具体的类型),执行不同对象的函数 ,表现成多态.
if (hf->power() > ef->attack()) //hf->power()函数调用会有多态发生
{
printf("主角win\n");
}
else
{
printf("主角挂掉\n");
}
} 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 ;
}

C++——多态的更多相关文章

  1. Java中的多态

    1.多态:具有表现多种形态的能力的特征 父类: public abstract class Animal {public abstract void Say();} 子类: public class ...

  2. C# 工厂模式+虚方法(接口、抽象方法)实现多态

    面向对象语言的三大特征之一就是多态,听起来多态比较抽象,简而言之就是同一行为针对不同对象得到不同的结果,同一对象,在不同的环境下得到不同的状态. 实例说明: 业务需求:实现一个打开文件的控制台程序的d ...

  3. C#非常重要基础之多态

    前几天看了一位同志的博客,写的是关于他自己去支付宝面试的经历.过程大体是这样的:问答的时候,前面部分,作者都应答如流,说起自己经验如何之丰富,最后面试官问了作者一个问题:请简述多态的概念和作用.结果这 ...

  4. C++多态详解

    多态是面向对象的程序设计的关键技术.多态:调用同一个函数名,可以根据需要但实现不同的功能.多态体现在两个方面,我们以前学过的编译时的多态性(函数重载)和现在我们这一章将要学习的运行时的多态性(虚函数) ...

  5. 【那些年关于java多态应用】

    1.多态:具有表现多种形态的能力的特征 父类: public abstract class Animal { public abstract void Say();} 子类: public class ...

  6. JAVA多态

    多态是指当系统A访问系统B的服务时,系统B可以通过多种方式来提供服务,而这一切对系统A是透明的.比如动物园的饲养员能够给各种各样的动物喂食.下图显示了饲养员Feeder,食物Food和动物Animal ...

  7. C#多态“说来也说”——逻辑层BLL中的多态使用

    本文版权归博客园和作者吴双本人共同所有.欢迎转载,转载和爬虫请注明原文地址 http://www.cnblogs.com/tdws/p/5861842.html 昨天晚上,有个朋友说学了好久,依然没搞 ...

  8. java多态的理解

    面向对象语言中的类有三个特征,封装.继承.多态.封装与继承很好理解,那什么是多态呢? 1.什么是多态? 多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同 ...

  9. java中如何实现多态

    复习基础知识 多态,就是重载和重写.重载发生在一个类中.重写发生在子类,意思就是子类重写父类相同名称的方法.刚学语言有的东西,不必搞得那么清楚,只有知道怎么用就行了,有的问题你要想真正把它搞得很懂,短 ...

  10. OC多态

    要点: 1.多种形态,引用的多种形态对于一个引用变量,可以指向任何类的对象.对于一个父类的引用(类与类之间有一种继承关系),可以指向子类,也可以指向本类,指向的类型不同.当通过此引用向对象发送消息,调 ...

随机推荐

  1. Java中在磁盘上复制文件

    使用字节流实现 public static void main(String[] args) throws IOException { InputStream in = new FileInputSt ...

  2. wkhtmltopdf linux下html转pdf

    https://blog.csdn.net/wujunlei1595848/article/details/91129197 https://github.com/wkhtmltopdf/wkhtml ...

  3. 数组foreach

    简单使用 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  4. Android开发 MediaPlayer入门_播放本地视频

    前言 MediaPlayer,可以播放视频/音频,并且它支持本地和网络文件的播放.本片博客作为入门教程,先以最通俗的方式解释播放文件本地视频.(如果你嫌MediaPlayer还是太麻烦可以试试选择Vi ...

  5. Job 和 Cronjob 的使用

    Job负责处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束.而CronJob则就是在Job上加上了时间调度. Job 我们用Job这个资源对象来创建一个任务,我们定一个Job来 ...

  6. zepto-touch事件

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. 微信小程序-云开发

    云开发 初始化 wx.cloud.init({ env: 'test-x1dzi' }) 云数据库 数据类型 String,Number,Boolean,Array,Object,Date,GeoPo ...

  8. 通过队列实现进程间的通信(使用阻塞方式调用func函数)

    #_author:来童星#date:2019/12/17#通过队列实现进程间的通信from multiprocessing import Poolimport osimport timedef fun ...

  9. ios 查看UIView的层次继承关系工具

    http://stackoverflow.com/questions/5150186/how-do-i-inspect-the-view-hierarchy-in-ios https://github ...

  10. ionic:目录

    ylbtech-ionic:目录 1.返回顶部 1. http://www.runoob.com/ionic/ionic-tutorial.html 2. 2.返回顶部   3.返回顶部   4.返回 ...