C++初阶之缺省参数

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

前言

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

相关文章
|
1月前
|
编译器 C语言 C++
C++入门 | 命名空间、输入输出、缺省参数
C++入门 | 命名空间、输入输出、缺省参数
33 4
|
2月前
|
存储 自然语言处理 编译器
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
|
3月前
|
存储 编译器 C++
【C++ 初阶路】--- 类和对象(下)
【C++ 初阶路】--- 类和对象(下)
16 1
|
3月前
|
存储 编译器 C语言
【C++初阶路】--- 类和对象(中)
【C++初阶路】--- 类和对象(中)
22 1
|
3月前
|
安全 编译器 程序员
【C++初阶】--- C++入门(上)
【C++初阶】--- C++入门(上)
19 1
|
3月前
|
C语言 C++
【C++初阶】—— C++内存管理
【C++初阶】—— C++内存管理
26 1
|
3月前
|
存储 编译器 C语言
【C++ 初阶路】--- 类与对象(上)
【C++ 初阶路】--- 类与对象(上)
22 0
|
3月前
|
存储 安全 编译器
【C++初阶】--- C++入门(下)
【C++初阶】--- C++入门(下)
23 0
|
3月前
|
存储 编译器 Linux
【C++初阶】--- C++入门(中)
【C++初阶】--- C++入门(中)
21 0
|
3月前
|
编译器 C语言 C++
【C++】:C++关键字,命名空间,输入&输出,缺省参数
【C++】:C++关键字,命名空间,输入&输出,缺省参数
33 0