C++初阶之缺省参数

news/2024/11/26 9:40:31/

目录

前言

缺省参数

1.缺省参数的概念

 2.缺省参数的分类

全缺省参数

半缺省参数


前言

今天小编继续给大家带来C++的内容,那么今天小编给大家讲解的就是有关C++中缺省参数的介绍。


缺省参数

1.缺省参数的概念

缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实

参则采用该形参的缺省值,否则使用指定的实参。

那么在这里具体的意思是什么呢?小编这里给大家简单举一个例子说明一下

int Add(int a = 10, int b = 20)
{return  a + b;
}int main()
{int ret = 0;//这里我们先看我们没传参的情况下的ret值是多少ret = Add();cout << ret << endl;//这里我们传一个参的情况下的ret值是多大ret = Add(1);cout << ret << endl;//然后我们这里传两个实参,我们观察一下具体情况ret = Add(1,4);cout << ret << endl;return 0;
}

对于上面函数,我们对其形参赋值了一个缺省值,那么我们一共有三种调用情况,首先我们是不对该进行传参操作,那么以上我们的两个参数都是按缺省值进行参与函数的运行,那么我们实际上应该得到的值应该是30,第二种情况就是,我们传一个参数,那么我们得到的是第一个值按我们传的参数,另外一个数按我们的缺省值进行计算,那么我们这里得到的值应该就是21,对于第三种情况由于我们都传了实参,那么该得到的值就是两个实参相加,也就是5

那么我们运行一下行代码看一下运行情况:

 2.缺省参数的分类

对于缺省参数的分类小编这里直接给大家举两个例子,让大家合理的理解一下。

全缺省参数

int Add(int a = 10, int b = 20)
{return  a + b;
}

半缺省参数

int Add(int a , int b = 20)
{return  a + b;
}

这里大家应该发现了,我们这里的分类依据就是我们函数的形参是否全部赋值了缺省值,虽然这里的定义是比较简单的,但是这里有几个细节也是我们大家需要注意的。

1. 半缺省参数必须从右往左依次来给出,不能间隔着给

这里我给大家简单的解释一下,我们在给函数传参的时候,我们是按从左往右传参的,如果上面的函数我们给a赋值缺省值,但是不给b赋值缺省值,那么这里我们的传参就只能出现一种情况,也就是将函数的前后全部赋值,为什么这么说呢?首先有个前提,我们的函数传参是不能指定传参的,但是我们不传参,由于这个是半缺省参数,那么我们就会报错,但是我们只传一个值,那么接受到值的变量就是a,对于b我们并没有接收到值,那么这里也会报错,所以我们只能全部传参,那么我们使用缺省参数也就没有了意义,但是我们从右往左依次传参就避免了这种情况。


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

 对于这里我需要给大家简单的举个例子说明一下:

这里我们分别在一个头文件进行声明,在一个源文件中进行定义,那么这里我们用主函数调用函数我们观察结果:

 我们会发现这里说我们重定义了默认参数,那么按照C++语言的规则我们这里是不能放在一起定义的,所以这里小编给大家的建议是放在声明中进行定义即可。

3. 缺省值必须是常量或者全局变量
4.这里我们需要注意的是缺省参数是C++独有的,C语言并没有有关缺省参数的使用


http://www.ppmy.cn/news/46964.html

相关文章

实验一 表的建立、修改和删除

实验一 表的建立、修改和删除 第1关&#xff1a;创建表 任务描述 本关任务&#xff1a;要求学生创建Student&#xff0c;Course&#xff0c;SC表 相关知识 使用SQL语言中的create table语句。 SQL语句中关键字大小写不区分。 create table Student (Sno char(10) primary…

138. 复制带随机指针的链表

给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对应的原节点的值。新节点的 n…

【牛客网】树根与星际密码

目录 一、编程题 1.树根 2.星际密码 二、选择题 一、编程题 1.树根 链接&#xff1a;数根__牛客网 (nowcoder.com) 数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数&#xff0c;那么这个数就是数根&#xff1b;如果结果是两位数或者包括更多位的数…

换个角度使用Redis去解决跨域存取Session问题

系列文章目录 Redis缓存穿透、击穿、雪崩问题及解决方法 Spring Cache的使用–快速上手篇 分页查询–Java项目实战篇 全局异常处理–Java实战项目篇 该系列文章持续更新&#xff0c;更多的文章请点击我的主页查看哦&#xff01; 文章目录 系列文章目录前言一、遇到的情况二、解…

【论文总结】V-Shuttle:可扩展和语义感知的 Hypervisor 虚拟设备模糊测试

介绍 这是来自2021 CCS的一篇论文&#xff0c;作者有GaoningPan, Xingwei Lin, Xuhong Zhang, Yongkang Jia, Shouling Ji, Chunming Wu, Xinlei Ying, Jiashui Wang, Yanjun Wu。该论文提出V-shuttle的新框架来执行管控程序的模糊测试&#xff0c;该框架执行可扩展和语义感知…

AVL树(C++实现)

文章目录 AVL树的概念AVL树结点定义AVL树的插入AVL树的旋转左单旋右单旋左右单旋右左双旋 AVL树的验证AVL树的性能AVL树及测试完整代码 AVL树的概念 二叉搜索树虽然可以缩短查找的效率,但如果数据有序或接近有序,那么二叉搜索树将退化为单支树,查找元素则相当于在顺序表中搜索…

WHOIS查询参考:域名注册信息的含义

以下详细说明了域名的域名所有者、管理联系人、技术联系人、付费联系人等信息的中英文含义。为注册域名和whois查询提供参考。 域名所有者注册信息含义 域名所有者&#xff08;Registrant&#xff09;是指域名属于谁&#xff0c;用于判定域名所有权。域名所有者可以是单位企业…

C语言实现顺序表--数据结构

魔王的介绍&#xff1a;&#x1f636;‍&#x1f32b;️一名双非本科大一小白。魔王的目标&#xff1a;&#x1f92f;努力赶上周围卷王的脚步。魔王的主页&#xff1a;&#x1f525;&#x1f525;&#x1f525;大魔王.&#x1f525;&#x1f525;&#x1f525; ❤️‍&#x1…