C++笔记之重载和重写辨别

C++笔记之重载和重写辨别

code review!

文章目录

  • C++笔记之重载和重写辨别
    • 重载(overloading)
    • 重写(Overriding)

在C++中,重载(overloading)和重写(overriding)是面向对象编程中的两个重要概念,它们用于不同的目的和场景。

重载(overloading)

重载(Overloading)是指在同一个作用域内,通过改变函数的参数列表来定义具有相同名称但不同参数的多个函数。重载函数可以具有相同的名称,但是参数类型、参数个数或参数顺序必须不同。重载函数的选择是在编译时进行的,根据调用时提供的参数类型来选择合适的函数。

下面是一个重载函数的例子:
在这里插入图片描述

在上面的例子中,print 函数被重载了两次,一次接受整数参数,另一次接受浮点数参数。根据传递的参数类型,编译器会选择合适的重载函数进行调用。

重写(Overriding)

重写(Overriding)是指在派生类中重新定义基类中已有的虚函数。派生类可以通过重写基类的虚函数来提供自己的实现,从而覆盖基类中的实现。重写函数必须具有与基类函数相同的函数签名(包括函数名、参数列表和返回类型)。

下面是一个重写函数的例子:
在这里插入图片描述

在上面的例子中,Shape 类中的 draw 函数被声明为虚函数,并在派生类 Circle 中进行了重写。在 main 函数中,创建了一个指向 Circle 对象的 Shape 指针,并调用了 draw 函数。由于 draw 函数是虚函数,并且指针类型是 Shape*,所以会调用派生类 Circle 中的重写函数。

总结:

  • 重载是指在同一个作用域内,通过改变函数的参数列表来定义具有相同名称但不同参数的多个函数。重载函数的选择是在编译时进行的,根据调用时提供的参数类型来选择合适的函数。
  • 重写是指在派生类中重新定义基类中已有的虚函数。派生类通过重写虚函数来提供自己的实现,从而覆盖基类中的实现。重写函数必须具有与基类函数相同的函数签名。重写的选择是在运行时进行的,根据对象的实际类型来选择合适的函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/264360.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装 DevEco Studio 后不能用本地 Node.js 打开

安装 DevEco Studio 后第一次打开时,不能用本地 Node.js 打开 答:因为本地 Node.js 文件夹名字中有空格 Node.js路径只能包含字母、数字、“。”、“_”、“-”、“:”和“V” 解决方法: 1.修改文件夹名称 2.重新下载 注意:找一…

Java Web——过滤器 监听器

目录 1. Filter & 过滤器 1.1. 过滤器概述 1.2. 过滤器的使用 1.3. 过滤器生命周期 1.4. 过滤器链的使用 1.5. 注解方式配置过滤器 2. Listener & 监听器 2.1. 监听器概述 2.2. Java Web的监听器 2.2.1. 常用监听器 2.2.1.1. ServletContextListener监听器 …

Redis集群:分布式的less is more

Redis完全就是《数据密集型应用系统设计》的简单实现,主打一个**大道至简**。推荐配合这本书(或者15-4456.824)一起看[1]。 本文就从分布式视角来介绍下Redis集群模式,顺便看看一些经典的分布式问题在redis下如何解决。 **这篇文…

kafka学习笔记--如何保证生产者数据可靠、不重复、有序

本文内容来自尚硅谷B站公开教学视频,仅做个人总结、学习、复习使用,任何对此文章的引用,应当说明源出处为尚硅谷,不得用于商业用途。 如有侵权、联系速删 视频教程链接:【尚硅谷】Kafka3.x教程(从入门到调优…

区块链媒体宣发:揭示优势与趋势,引领信息传播新时代

在数字化潮流中,区块链技术正以惊人的速度改变着传媒行业的格局。从区块链媒体宣发中获得的种种优势和未来的趋势,不仅为企业带来了新的推广途径,也在信息传播领域掀起了一场革命。本文将深入探讨区块链媒体宣发的优势以及未来的发展趋势。 1…

Android12之解决:scripts/gcc-wrapper.py, line 79, in run_gcc(一百六十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

多维时序 | MATLAB实现TSOA-TCN-Multihead-Attention多头注意力机制多变量时间序列预测

多维时序 | MATLAB实现TSOA-TCN-Multihead-Attention多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现TSOA-TCN-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现TSOA-TCN-Multihead-…

计网Lesson8 - NAT技术与链路层概述

文章目录 NAT 技术1. 因特网的接入方式2. 公网和私网3. NAT 技术 链路层1. 数据链路层概述2. 数据链路层的三个问题2.1 封装成帧2.2 透明传输2.3 差错检测 NAT 技术 1. 因特网的接入方式 光猫将电信号转换为数字信号发送给路由器 光纤入户 光纤传递的就是数字信号&#xff0c…

【Linux】进程间通信之共享内存/消息队列/信号量

文章目录 一、共享内存的概念及原理二、共享内存相关接口说明1.shmget函数2.ftok函数3.shmat函数4.shmdt函数5.shmctl函数 三、用共享内存实现server&client通信1.shm_server.cc2.shm_client.cc3.comm.hpp4.查看ipc资源及其特征5.共享内存的优缺点6.共享内存的数据结构 四、…

neuq-acm预备队训练week 8 P1144 最短路计数

题目描述 给出一个 N 个顶点 M条边的无向无权图,顶点编号为 1∼N。问从顶点 1 开始,到其他每个点的最短路有几条。 题目限制 输入格式 第一行包含 22 个正整数 N,M,为图的顶点数与边数。 接下来 M 行,每行 2个正整数 x,y&…

Docker容器的可视化管理工具—DockerUI本地部署与远程访问

文章目录 前言1. 安装部署DockerUI2. 安装cpolar内网穿透3. 配置DockerUI公网访问地址4. 公网远程访问DockerUI5. 固定DockerUI公网地址 前言 DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基…

浅析不同NAND架构的差异与影响

SSD的存储介质是什么,它就是NAND闪存。那你知道NAND闪存是怎么工作的吗?其实,它就是由很多个晶体管组成的。这些晶体管里面存储着电荷,代表着我们的二进制数据,要么是“0”,要么是“1”。NAND闪存原理上是一…