IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++:多态上 -> 正文阅读

[C++知识库]C++:多态上

1.概念

概念:

  • 通俗来说就是多种形态;
  • 也就是说就是不同对象完成某个行为会产生不同的状态

例如:

  • 比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买票;

2.代码实现

虚函数:被virtual修饰的类成员(不能是静态)函数

条件1:在继承体系下,父类中有虚函数,且子类对父类中的虚函数进行了重写


条件2:虚函数只能通过父类的引用或者指针调用

满足了两个条件才能实现多态
多态的体现:程序运行时,根据基类的指针指向不同类的对象,选择对应的虚函数进行调用
在这里插入图片描述

3.重写

构成重写的条件

  1. 父类函数一定要是虚函数(一定要加关键字),子类可以不加关键字但是最好加上;
  2. 父子类虚函数原型要一致:函数名,参数列表,返回值类型;
    例外:协变和析构函数重写
  3. 子类虚函数访问权限,可以与父类被重写虚函数的访问权限无关
  4. 子类函数前不用添加virtual也是虚函数

1.协变:返回值类型可以不同
在这里插入图片描述


2.析构函数重写:函数名可以不同
建议将父类的析构函数设置为虚函数,这样可以防止因子类涉及到资源管理造成内存泄漏
在这里插入图片描述
只需在子类析构函数前加virtual关键字即可
在这里插入图片描述
原因:将父类析构函数改成虚函数后,只要子类析构函数显式给出,两个类的虚构函数构成了重写

其它关键字

override:用于修饰子类虚函数,添加于函数括号之后


作用:

  • 在编译阶段,检查子类虚函数是否对父类中哪个虚函数进行了重写;
  • 如果被override修饰的子类虚函数重写了某个虚函数,编译通过,否则失败

final:用于修饰父类虚函数,添加于函数括号之后


作用:表明该父类虚函数不能被子类虚函数重写

final:用于修饰类,添加于不被继承的类名之后


作用:表明该类不能再被继承

函数重载、函数重定义、函数重写的区别

在继承体系中,如果父类和子类两个 “成员函数” 名相同,不是重写就是重定义

图片来源于比特教育

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:21:43  更:2021-08-22 13:23:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 5:38:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计