C++ 缺省参数 函数重载 引用

news2025/1/21 18:43:17

缺省参数,我们先看一下什么是缺省参数

首先,这个是我们的需要传参的函数,这里我们传入 1 然后就输出 a

下面我们就看一下缺省参数

 

我们现在看main函数里面调用fun函数,这里会输出多少呢?

OK 这里我们分别输出了0 和 1

这里的fun函数我们给了一个缺省值 0 ,所以我们调用这个函数的时候,如果我们给它传了值,这里输出的值就是我们传入的值,如果我们没有传入值的话,就是默认的缺省值

我们在继续看一个

 

那么这里我们会输出多少呢?

 

OK 这里很显然是三个0,因为这里我们一个值都没有传

那 如果是这样呢?

 

我们传入了一个值

这样会输出多少呢?

 

这里我们看到输出了1 0 0 ,我们可以看到骂我们传入的那个值传给了a

 

那么这样传参我们当然也可以想到输出的是多少了

 

那么我们在变一下

我们看下面

 

我们看到,这里的三个参数我们都给了默认的缺省值,这样的我们叫做全缺省,如果我们只给一部分,那么就叫做半缺省,记住半缺省并不是缺省一半,而是缺省一部分

 

所以这样的我们就叫做半缺省,如果是这样的话,我们应该如何传参呢?

这里记住,我们如果是半缺省的话,一定要从右往左缺省

下面我们看一下,我们如何传参

 

这里 ,我们有两个缺省值,所以我们只需要传一个参数,这样我们输出的话,输出的是多少呢?

这里我们输出的是 1 0 0, 我们还是把1 传给了a变量,所以这里我们传参的话是从左往右传,缺省的话,是从右向左缺省

下面我们看一下函数重载 

在C++中,函数名是可以相同的,而C语言中是不可以的,而在C++中,在同一命名空间下,函数名相同,参数不同(类型不同,顺序不同,参数个数不同)就构成函数重载。

下面就介绍一下函数重载

我们看到,我们分别调用了Add函数,一个传了整型,另外一个传入浮点型,我们这里会输出多少呢?

 

我们看到,我们调用了名字相同的函数,得到的参数却不同,这既是函数重载,因为我们传入的参数不同,所哟调用到了不同的函数

那么我们的函数重载如果是这样子还构成函数重载吗?

 

我们其中一个 int 和 int 类型的, 另外一个是int 和double 类型的,这样我们的函数还可以构成重载吗?

 

我们看到还是可以构成重载的,因为这里是函数类型不同

 

 那么我们这样还构成重载吗?

我们还是可以看到,是构成重载的,应为这里是函数的参数顺序不同

那么如果我们的返回值相同还可以构成重载吗?

 

 

我们看到时构成重载的,因为函数重载和返回值没有关系

我们在看一个

 

 

如果时这样我们还构成函数重载吗?

我们可以想一下判断函数是否构成重载的条件(在相同作用域内 函数名相同 函数的参数不同(参数个数不同 参数类型不同 参数顺不同)),我们可以就按到这两个函数构成函数重载

那么如果我们调用这两个函数会右什么问题吗?

 

 

当我们传入 1 的时候我们调用了传入int 的函数

那么如果我们调的时候空参数的呢??

这时候我们看到就出现问题了,为社么呢?

因为,如果我们不传入值的话,我们这个函数时调用哪一个呢?时调用空的呢?还是调用缺省的呢?

所以这时候就出现了二意性

下面我们在看一下引用(&)

在C++中什么时引用呢?

我们下面看

 

 在看引用之前我们先看一下指针,这里我们会输出多少呢?

这里我们都输出了 10 ,那么我们来看一下引用

 

我们这样就是引用,使用了‘&’符号

那么我们这样会输出多少呢?

 

还都是 10 ,这里引用和指针的区别时什么呢?

如果我们向修改 a 的值我们用引用和指针分别怎么操作呢? 我们继续看一下 

这里我们来看一下

 

这里我们都对a 进行了修改,我们看到如果我们向修改 a 的话,我们可以直接对引用进行修改,而我们想要用指针修改的话,我们时需要先解引用,在修改的,所以我们就可以把 b 直接理解为是 a而引用也就是“取别名”。

那么他们还有什么区别呢?

 

这里的 b = x 是对b这个引用进行赋值还是,修改引用指向呢?

 

这里我们可以看到,我们把 x 给了b,如果这里是改变引用的指向的话,&b就和&x是相同的,否则就是和&a相同

 

我们看到它是和&a相同的 所以这里就是把x的值给给b,所以这里我们也可以确认,引用时不可以改变指向的

这就是今天要讲的内容 

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

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

相关文章

在线文章生成器-文章生成器在线生成

免费自动写作软件 目前市面上存在一些免费自动写作软件,以下介绍几个开源的自动写作软件。 GPT-2:这是由OpenAI推出的一款自动写作工具,它可以生成高质量的文章,其优点在于能够理解语言结构和语法规则,从而生成表达自…

如何建立含有逻辑删除字段的唯一索引

文章目录业务场景分析解决总结业务场景 在实际工作当中,遇到一个场景,就是在用户注册时,名字要全局唯一,当然,我们是可以对用户进行删除的,你会怎么去做? 分析 一般来说,我们可以…

Java语法理论和面经杂疑篇《八. File类和IO流》

目录 1. java.io.File类的使用 1.1 概述 1.2 构造器 1.3 常用方法 1、获取文件和目录基本信息 2 列出目录的下一级 3 File类的重命名功能 4 判断功能的方法 5 创建、删除功能 1.4 练习 2. IO流原理及流的分类 ​编辑 2.1 Java IO原理 2.2 流的分类 2.3 流的API …

5.基于多能互补的热电联供型微网优化运行

说明书 代码相关资源:风、光、负荷场景生成;风电出力各场景及概率;光伏出力各场景及概率;负荷各场景及概率;场景的削减;样本概率初始化;样本削减 风电场风速两参数weibull(威布尔)分布的MATLA…

干翻Hadoop系列之:Hadoop前瞻之分布式知识

前言 一:海量数据价值 二:海量数据两个棘手问题 1:海量数据如何存储? 掌握分布式存储数据的思想。 A:方案1:单机存储磁盘不够加磁盘 限制问题: 1:一台计算机不能无限制拓充 2&a…

tomcat安装与配置

目录 1、安装jdk(官方站点下载 jdk-8u60-linux-x64.tar.gz ) 2、安装tomcat(官方站点下载apache-tomcat-8.5.20.tar.gz) 3、在浏览器上输入http://192.168.88.144:8080 4、写一个启动关闭的服务脚本 5、布置jpress应用 6、浏览器地址栏输入http://192…

真正的ChatGPT平替产品:Claude

01 Claude ChatGPT已经流行了很长的时间了,但是ChatGPT 由于种种的限制,我们无法用上,也有很多的平替产品,但是这些平替产品也有很多的问题。 现在 Claude 出来了,没有任何的限制。 Claude 不用魔法,注…

go test main包报错

前言 先提出问题, 再说明原因. 有如下一段代码: 当执行go test测试时, 会报如下错误: main.test /var/folders/55/47pl3jxx6rg7m0r6xvn4f7wr0000gn/T/go-build2769402238/b001/_testmain.go:13:8: could not import main (cannot import “main”) FAIL main [build failed] 什…

Linux文件类型详解

在Linux中一切都是文件,但文件都得有类型。那如何查看文件是什么类型了?在Linux中可以使用以下命令 ls -l path在显示文件的属性通常会以如下形式进行显示: drwxr-xr-x第1个字母:代表文件类型 第2~4字母:代表用户的权…

Dell戴尔笔记本电脑G5 SE 5505原装出厂Windows10系统恢复原厂oem系统1909

Dell戴尔笔记本电脑G5 SE 5505原装出厂Windows10系统恢复原厂oem系统1909 链接:https://pan.baidu.com/s/1imNdbSvxEqbMI3ODo-K3qQ?pwdhdez 提取码:hdez

Kubernetes安全加固

本博客地址:https://security.blog.csdn.net/article/details/130034953 一、认证安全配置 1.1、X.509客户端证书 X.509客户端证书是目前用户最常用的认证安全配置方式,其也可称作HTTPS证书认证,是基于CA根证书签名的双向数字证书认证方式…

论文精读1:(网格特征)In Defense of Grid Features for Visual Question Answering(CVPR2020)

马萨诸塞州立大学阿默斯特分校Facebook 人工智能研究 目录1. Introduction2. Related WorkVisual features for vision and language tasksPre-training for VQARegions vs. grids.3. From Regions to Grids3.1. Bottom-Up Attention with RegionsRegion selectionRegion featu…

5年测试被裁,恶补3个月上岸字节28K,面试差点被问哭···

我的个人背景非常简单,也可以说丝毫没有亮点。 学历普通,计算机专业二本毕业,毕业后出来就一直在一家小公司,岁月如梭细,算了下至今从事软件测试已经5年了,也点点点了五年,每天都是重复的工作&…

大数据4 - 分布式计算

1.分布式计算概述 分散->汇总模式: 1. 将数据分片,多台服务器各自负责一部分数据处理 2. 然后将各自的结果,进行汇总处理 3. 最终得到想要的计算结果 1. 什么是计算、分布式计算? •计算:对数据进行处理&#x…

git版本规范-前端

前言 本文档适用于前端的小伙伴。针对目前前端只有测试环境和生产环境,为更好管理前端代码和适用于自动化部署,编写次文档,有不同意见的小伙伴可以进行讨论。 分支 由于没有目前没有预发环境,简化开发、测试、部署和发布流程&a…

W80X|联盛德|nulllab空想实验室|Arduino适配|学习(6):w80x_arduino环境安装

文章目录概述官方推荐安装方法(实测未成功)readme中的安装步骤:手动安装方法:clone项目至本地手动新建w80x_arduino管理器存放目录w80x_arduino开发进展说明概述 此开源项目由nulllab空想实验室团队维护,并得到联盛德…

STL基本概念

📖作者介绍:22级树莓人(计算机专业),热爱编程<目前在c++阶段>——目标Windows,MySQL,Qt,数据结构与算法,Linux,多线程&…

vue3+TS+Pinia+Vite项目实战之一

文章目录一、创建项目1.1 使用脚手架创建项目1.2 初始化项目二、登录页面的开发三、使用vite-plugin-mock模拟后台接口返回数据四、前端调用后端接口使用axios五、首页layout六、动态菜单七、设置需要登录才能访问某些页面一、创建项目 1.1 使用脚手架创建项目 npm init vuel…

【网络安全】SQL注入--报错注入

报错注入报错注入定义代码展示常用的报错语句1.获取数据库名称2.获取mysql账号密码3.获取表名4.获取字段名5.获取账号密码报错注入定义 报错注入:利用sql语句的不规范,获取相关sql提示信息 代码展示 常用的报错语句 select first_name, last_name FROM…

【小程序】django笔记2

templates路径除了在settings中的templates的DIR[]中申明还有什么别的方法?已知,django底层根据app注册顺序查找各app文件中的templates文件夹,在其中搜索目标模版文件。已知,app注册在settings中的INSTAll-APPS里。已知&#xff…