一、概念:调用同名函数,由于上下文的不同会有不同实现的一种机制。

二、种类:

1、静态多态----函数重载、运算符重载 动态多态----父子间继承+虚函数

2、动态多态的满足条件:

  1. 父类中有虚函数
  2. 子类重写父类中的虚函数
  3. 父类指针或引用指向子类对象

三、纯虚函数和抽象类

  1. 纯虚函数语法:virtual+函数类型+函数名()=0; eg:virtual void func()=0;
  2. 如果类中有了纯虚函数,那么这个类也叫抽象类。
  3. 抽象类无法实例化对象。
  4. 继承抽象类的子类,必须重写父类中的纯虚函数,否则子类也是抽象类

四、虚析构与纯虚析构

  1. 如果子类中有创建在堆中的属性,那么多态情况下,不会调用子类的析构代码,就会导致内存泄漏。
  2. 解决方案:理由虚析构或者纯虚析构。
  3. 虚析构:在析构函数前加virtual关键字。
  4. 纯虚析构语法:virtual+~函数名()=0; eg: virtual ~Student()=0;

五、向上向下类型转换

1.父类转子类 向下类型转化 不安全。 原因:子类继承父类,子类的空间比父类大,那么从父类转子类的时候,指针可能会指向,子类比父类大的那一部分,会导致指针越界
2.子类转父类 向上类型转化 安全。
3.如果发生多态,那么上述均为安全。
发生多态,父类指针指向子类对象,即为父类分配一个子类大小的空间。不管指针怎么指向,都是不会越界。

C++核心编程 17多态相关推荐

  1. C++核心编程(10)--多态

    目录 10 多态 10.1 多态的基本概念 10.2 多态案例一-计算器类 10.3 纯虚函数和抽象类 10.4 多态案例二-制作饮品 10.5 虚析构和纯虚析构 10.6 多态案例三-电脑组装 10 ...

  2. C++初步之核心编程篇五:多态与虚函数类

    C++初步之核心编程篇五:多态与虚函数类 文章目录 C++初步之核心编程篇五:多态与虚函数类 1. 多态的概要 2. 多态案例一-计算器类 3. 纯虚函数和抽象类 4. 多态案例二-制作饮品 5. 虚 ...

  3. C++核心编程:P10->类和对象----多态

    本系列文章为黑马程序员C++教程学习笔记,前面的系列文章链接如下 C++核心编程:P1->程序的内存模型 C++核心编程:P2->引用 C++核心编程:P3->函数提高 C++核心编 ...

  4. AI领域的Python核心编程【学生免费】

    <Python程序设计>这门课是AI领域的Python核心编程课,我们设立的目标是希望通过这门课提升你的代码能力,助力你成为合格的算法工程师. 截止目前已经有3000+同学免费参加了本课程 ...

  5. python核心编程--笔记(不定时跟新)(转)

    的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找python路径 1.4 –v   ...

  6. 182_赵陈雄_java核心编程实验

    Java-核心编程实验课笔记(一) 一:Java特性和优势 1:简单性 2:面向对象 3:可移植性 4:高性能 5:分布式 6:动态性 7:多线程 8:安全性 9:健壮性 二:Java程序运行机制 1 ...

  7. 184_刘发顺_Java核心编程

    Java核心编程 Java 技术栈: Java基础 Java面向对象:Java 是一种面向对象的语言,它对对象中的类.对象.继承.封装.多态.接口.包等均有很好的支持.为了简单起见,Java 只支持类 ...

  8. Qt on Android 核心编程

    Qt on Android 核心编程(最好看的Qt编程书!CSDN博主foruok倾力奉献!) 安晓辉 著   ISBN 978-7-121-24457-5 2015年1月出版 定价:65.00元 4 ...

  9. 拒绝从入门到放弃_《Python 核心编程 (第二版)》必读目录

    目录 目录 关于这本书 必看知识点 最后 关于这本书 <Python 核心编程 (第二版)>是一本 Python 编程的入门书,分为 Python 核心(其实并不核心,应该叫基础) 和 高 ...

最新文章

  1. MVC in MFC or WTL - yinxufeng - 博客园
  2. Redis应用案例 查找某个值的范围
  3. 前端学习(2041)vue之电商管理系统电商系统之只是在发布阶段生效
  4. android官方wifidemo,Android应用开发:连接指定Wifi的Demo分享
  5. SQL Server IS NULL语句使用举例
  6. jpa 原生sql 查询返回一个实体_JPA查询--使用原生sql 并且把查询结果转为实体对象...
  7. HDU2017 字符串统计【入门】
  8. 【UVA524】Prime Ring Problem(素数环--递归回溯+全局变量的一个小坑点---水题)
  9. PHP图片添加文字水印或海报
  10. css动画-animation各个属性详解
  11. OneZero第四周第二次站立会议(2016.4.12)
  12. Excel批量核实输入的银行卡号信息是否正确!
  13. (附源码)springboot家庭财务分析系统 毕业设计641323
  14. H5页面input输入框,在ios手机中被顶出页面解决方案
  15. 我国影视行业的痛点——影视链的目标
  16. 【3】IMU模块:PA-IMU-460 ROS驱动 + 与GNSS时间同步
  17. R语言升级版本和迁移老版本中的包到新版本上的一些问题
  18. 仿QQ弹出窗口 gggggggggggg
  19. 2Whatsup-gold14.2初始设置
  20. C语言生成midi文件,介绍二个wave 转 midi的开源项目

热门文章

  1. WordPress主题分享:Avada主题v7.8.0免费下载 2022年最新版
  2. 移动硬盘出现“位置不可用无法访问,磁盘结构损坏且无法读取”的解决方法
  3. python提取pdf中的图片_PDF图片提取
  4. 云计算与云原生 — OpenShift 的架构设计
  5. 几种Linux版本的使用心得和比较
  6. 毕业论文(二)文章中多次引用同一参考文献的不同内容该如何标注
  7. 五种开源协议:GPL, LGPL, APACHE, BSD, MIT
  8. 华为ME909 4G LTE模块在树莓派+KALI2020平台的联网演示
  9. 北语18秋《计算机应用基础》练习1,每日一练丨一建实务科练习!
  10. 【调剂】沈阳理工大学关于2022年硕士研究生招生部分专业拟接收调剂的说明