前言
今天小编继续给大家带来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语言并没有有关缺省参数的使用