C++入门——函数重载

news2024/11/23 12:32:37

C++入门——函数重载与缺省

先说说什么是缺省

大家生活中都知道什么关于缺省这个词的例子吗?
肯定是一头雾水,没事我举一个例子,给大家解释一下。
假如小菜是一个舔狗,他天天跟女神买早餐、嘘寒问暖。可是女神还是天天不为所动,如果当女神老了年纪大了,想找个人结婚可是身边没有可用之人,那他就会想到小菜,反之有合适对象,就不会再去搭理小菜了。
这是小菜就是可有可无的存在,在了不会影响,但是要用的时候可以顶一下。
在这里插入图片描述
那我在用代码写一个例子

void TestFunc(int a = 0)
{
 cout<<a<<endl;
}
int main()
{
 TestFunc(); // 没有传参时,使用参数的默认值
 TestFunc(10); // 传参时,使用指定的实参
}

如果什么都没输入则是输出0,输入数字便会显示输入的数字。

全缺省与半缺省

缺省还分为半缺省和全缺省。

void TestFunc(int a = 0)
{
 cout<<a<<endl;
}
int main()
{
 TestFunc(); // 没有传参时,使用参数的默认值
 TestFunc(10); // 传参时,使用指定的实参
}

全缺省,就和上面的例子一样,给的所有的参数都给了缺省值。

半缺省则是只给了一部分。

void TestFunc(int a, int b = 10, int c = 20)
{
 cout<<"a = "<<a<<endl;
 cout<<"b = "<<b<<endl;
 cout<<"c = "<<c<<endl;
}

或者

void TestFunc(int a, int b, int c = 20)
{
 cout<<"a = "<<a<<endl;
 cout<<"b = "<<b<<endl;
 cout<<"c = "<<c<<endl;
}

但是不可以像下面一样.

void TestFunc(int a, int b = 10, int c )
{
 cout<<"a = "<<a<<endl;
 cout<<"b = "<<b<<endl;
 cout<<"c = "<<c<<endl;
}
void TestFunc(int a= 20, int b = 10, int c )
{
 cout<<"a = "<<a<<endl;
 cout<<"b = "<<b<<endl;
 cout<<"c = "<<c<<endl;
}

只能从左往右缺省,不可以从右往左缺省,也不能中间缺省,要连续缺省。

缺省参数不能在函数声明和定义中同时出现
如:

//a.h
void TestFunc(int a = 10);
// a.c
void TestFunc(int a = 20)
{}

注意:如果生命与定义位置同时出现,恰巧两个位置提供的值不同,那编译器就无法确定到底该用那
个缺省值

所以只要在一个地方给出缺省值就好。

什么是函数重载

自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了。
比如:以前有一个笑话,国有两个体育项目大家根本不用看,也不用担心。一个是乒乓球,一个是男足。前
者是“谁也赢不了!”,后者是“谁也赢不了!”

函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的
形参列表(参数个数 或 类型 或 顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。

只是参数个数 或 类型 或 顺序不同这个概念太重要了。

int Add(int left, int right)
{
return left+right;
}
double Add(double left, double right)
{
 return left+right;
}
long Add(long left, long right)
{
 return left+right;
}
int main()
{
 Add(10, 20);
 Add(10.0, 20.0);
 Add(10L, 20L);
 
 return 0;
}

和返回类型无关,返回类型不同不构成重载。

这两个函数构成重载吗?

short Add(short left, short right)
{
 return left+right;
}

int Add(short left, short right)
{
 return left+right;
}

显然不构成,因为参数类型,个数,顺序都一样,会编译错误的。
在这里插入图片描述
通过这里就理解了C语言没办法支持重载,因为同名函数没办法区分。而C++是通过函数修饰规则来区分,只要参数不同,修饰出来的名字就不一样,就支持了重载。
C不支持重载,C++支持重载,有兴趣可以去研究一下,这里大家就记住就可以了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于LabVIEW单片机的抢答器的设计

实训题目&#xff1a;基于LabVIEW单片机的抢答器的设计 1 系统设计 1.1 设计要求 1.1.1 设计任务 设计一个基于LABVIEW的6人抢答器&#xff0c;实现抢答器的基本功能。 1.1.2 性能指标要求 需要自己设计电路并焊接电路板。基本要求&#xff1a;有一个主持人控制开关和…

【华为机试真题详解】投篮大赛【2022 Q4 | 100分】

文章目录 前言题目描述示例 1题目解析参考代码前言 《华为机试真题详解 Python实现》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能最优)…

WeOps上新啦 | WeOpsV3.13网络设备监控全新改造,支持拓展不同品牌型号

本次WeOpsV3.13版本更新主题总结为&#xff1a; 优化网络设备监控&#xff0c;支持拓展不同品牌和型号的设备监控新增3D立体应用全景大屏&#xff0c;全方位展示应用和监控情况新增事件订阅&#xff0c;支持资产的到期提醒监控告警/IT服务台等模块持续更新&#xff0c;简化操作…

基于Android的太原市景点推荐系统的设计与实现

毕业设计 基于Android的太原市景点 推荐系统的设计与实现 1&#xff0e;课题意义及目标 随着人们生活水平的提高&#xff0c;外出旅游已经成了人们放松休闲的主要活动之一。现在移动端设备已是人们必备&#xff0c;最重要的是携带方便&#xff0c;基于Android的太原市景点推…

数图互通公用房基础数据管理与维护

公用房情况信息化&#xff0c;包括公用房位置、面积参数等&#xff0c;可便捷维护&#xff0c;并提供查询统计&#xff1b;实现二级单位对分配公用房的管理&#xff0c;可便捷维护&#xff0c;并提供查询统计&#xff1b;实现公用房使用人&#xff0c;对使用公用房的管理&#…

C++ Reference: Standard C++ Library reference: Containers: list: list: clear

C官网参考链接&#xff1a;https://cplusplus.com/reference/list/list/clear/ 公有成员函数 <list> std::list::clear C98 void clear(); C11 void clear() noexcept;清除内容 从list容器中删除所有元素&#xff08;已销毁&#xff09;&#xff0c;并将容器的size保留为…

设计模式-外观模式

前言 在聊外观模式之前&#xff0c;我们先来聊聊体检过程。一般体检过程就是我们根据网上预定得日期空腹去体检中心。根据预定得项目&#xff0c;有一般检查、内科、外科、眼科、彩超、心电图、血常规、尿常规等等项目。 而我们往往第一次去是不知道这些房间是在哪里的&#…

XenServer7.6安装教程

XenServer7.6安装安装步骤其他XenServer 7.0 系统 yum 出错解决办法XenServer其他部署问题安装步骤 进入系统启动界面 > 按回车&#xff0c;等待加载&#xff1a; 1、键盘布局选择 > 选择us&#xff1a; 2、欢迎界面 > 选择ok&#xff1a; 3、用户协议 > 选…

【大数据入门核心技术-Flume】(三)使用Flume采集数据到HDFS

目录 一、准备工作 1、Hadoop环境安装 2、Flume安装部署 二、采集数据到HDFS 1、配置任务文件 2、启动传输 3、查看是否同步成功 三、常见问题 1、运行flume-ng agent时报错com.google.common.base.Preconditions.checkArgument 2、ERR: File name has been re-used w…

tomcat配置https

tomcat配置前提需要开放需要配置端口&#xff0c;尤其是云服务器需要单独去提供商控制面板放行好再进行配置HTTPS&#xff0c;常见配置的端口&#xff1a;443、8443&#xff0c;另外配置过程如果项目正常运行&#xff0c;建议备份一份配置文件。 tomcat配置https步骤 一、我们…

EEMD(集合经验模态分解)

1. EEMD(集合经验模态分解)的概念 EEMD(Ensemble Empirical Mode Decomposition)是最常见的一种EMD改进方法。他的优势主要是解决EMD方法中的模态混叠现象。 说到模态混叠,顾名思义就是不同模态的信号混叠在一起,一般有两种情况:一是不同特征尺度的信号在一个IMF分量中…

更多自有品牌创新好物,尽在2023深圳国际自有品牌展暨新消品展

受整体环境的影响&#xff0c;以及内容购物、兴趣电商、O2O、团长等新消费方式崛起&#xff0c;传统商场、大卖场等实体零售市场发展呈下滑趋势。让零售行业可以重拾信心&#xff0c;迫切需要寻找新的业绩突破形式。这些年自有品牌&#xff0c;被越来越多的国内零售商所关注&am…

BL101助力于采集光伏电流电压

能源危机在世界范围内愈演愈烈&#xff0c; 俄乌冲突后&#xff0c;美国加大对俄罗斯能源的制裁力度&#xff0c;禁止从俄罗斯进口能源&#xff0c;也想办法让其欧洲盟友对俄罗斯进行抵制。导致油价高企&#xff0c;天然气价格也是一路飙升。各国都在发展新能源&#xff0c;风电…

【工具】JS脚本|网页任意视频倍速播放(包括MOOC、本地视频、其他的视频)

只要浏览器播放视频时用的是<video>&#xff0c;而且当前页面只有这一个视频&#xff0c;就可以用这个脚本。 刚好也是世界杯 CSDN 博客的活动了&#xff0c;虽然对活动没什么兴趣但是还是写一句和活动相关的话吧——世界杯为什么要看直播呢&#xff01;不如一起来倍速观…

ssm+Vue计算机毕业设计校园洗衣机预约系统(程序+LW文档)

ssmVue计算机毕业设计校园洗衣机预约系统&#xff08;程序LW文档&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目…

Linux内存查看通用方法(二): kernel空间

接上文&#xff1a; Linux内存查看通用方法&#xff08;一&#xff09;&#xff1a; user空间_红桃Jk的博客-CSDN博客_linux内存查看在嵌入式linux上&#xff0c;统计内存情况的一般方法https://blog.csdn.net/qq_34597963/article/details/126023451?spm1001.2014.3001.5501…

用 CSS 从零写一个时间轴效果

时间轴效果介绍 在前端开发中&#xff0c;我们会遇到一些场景特别适合用时间轴来展示&#xff0c;例如下面按照日期时间来记录发生的事件&#xff1a; 还可以做成下面这种比较流行的左右对称卡片风格的时间轴&#xff1a; 如果再稍加装饰&#xff0c;还能有更加高大上的效果&a…

跨域的部分理解

1、跨域的原理 跨域&#xff0c;是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的。 同源策略&#xff0c;是浏览器对 JavaScript 实施的安全限制&#xff0c;只要协议、域名、端口有任何一个不同&#xff0c;都被当作是不同的域。 跨域原理&#xff0c;即是通…

量子计算(十四):超导量子芯片

文章目录 超导量子芯片 超导量子芯片 超导量子计算是基于超导电路的量子计算方案&#xff0c;其核心器件是超导约瑟夫森结。超导量子电路在设计、制备和测量等方面&#xff0c;与现有的集成电路技术具有较高的兼容性&#xff0c;对量子比特的能级与耦合可以实现非常灵活的设计…

node.js按照和配置环境变量

下载地址 选择自己适合的版本 Download | Node.js 安装 傻瓜式安装就好了 安装完成后 查看是否安装成功 打开黑窗口 node -v npm -v 配置全局安装的模块路径和缓存路径 在nodejs根目录,创建node_global&#xff0c;node_cache文件夹 命令提示符 以管理员方式运行 我的目…