👦个人主页:@Weraphael
✍🏻作者简介:目前学习C++和算法
✈️专栏:C++航路
🐋 希望大家多多支持,咱一起进步!😁
如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 📂 加关注✨
前言
本章是补充C语言语法的不足,以及C++是如何对C语言设计不合理的地方进行优化的。
目录
- 前言
- 一、缺省参数的概念
- 二、缺省参数的分类
- 2.1 全缺省参数
- 2.2 半缺省参数
- 三、缺省参数的用途
- 五、总结
一、缺省参数的概念
缺省参数是声明或定义函数时为函数的参数指定一个缺省值
在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参
二、缺省参数的分类
2.1 全缺省参数
顾名思义,就是所有的参数都给缺省值。
2.2 半缺省参数
半缺省就是部分参数给定缺省值。
【💀注意】
- 半缺省参数必须从右往左依次来给出,不能间隔着给
因为函数传参是从左到右依次传的,如果缺省参数不是从右往左依次给出,会导致上图中红色框框中的c
没有给定参数值- 缺省参数不能在函数声明和定义中同时出现
- 为什么声明和定义不能同时缺省呢?
原因是:如果定义和声明的缺省值不同,那编译器就无法确定到底该用那个缺省值。- 那么问题又来了,是定义给缺省值还是声明给缺省值呢?
答案是:声明。原因是:因为声明可以告诉调用者函数所期望的参数类型和默认值,从而帮助调用者正确地调用函数。如果缺省参数只出现在函数定义中,那么调用者就无法在调用函数之前了解到这些参数的默认值和类型,这可能会导致调用者传递错误的参数或者没有传递必需的参数。因此,将缺省参数包含在函数声明中可以提高代码的可读性和可维护性。3. 缺省值必须是常量或者全局变量
三、缺省参数的用途
可能会在一些初始化函数中有比较大的用途
假设现在要初始化一个静态的栈,如下图所示
正常的话我们可以写出以上的代码。但是如果现在我明确要插入1000个数据,但是以上代码会导致每次都要扩容(规定一开始的容量为4),效率也就不高。那有的人想,既然我知道要插入1000个数据,也就可以写出以下代码
以上代码就完美解决了扩容的消耗。但是在日常生活中,我们怎么可能明确知道要插入多少数据。有的人想,我可以让
DefaultCapacity
大一点,但是给大了会导致内存空间的浪费,给小了又要扩容。因此,就可以使用缺省参数来解决部分的问题
虽然缺省参数这种方法解决了空间浪费的问题,但还会存在一些扩容的消耗。但是扩容的消耗往往会比浪费空间好的多。
五、总结
缺省参数是指在定义函数时给某个参数设置一个默认值,当函数被调用时,如果没有传递该参数,就会使用默认值。缺省参数可以简化函数的调用,避免繁琐的参数传递过程,同时也提高了函数的灵活性。