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语言并没有有关缺省参数的使用

相关文章
|
5天前
|
编译器 程序员 C++
C++缺省参数
C++缺省参数
18 0
|
5天前
|
存储 安全 编译器
【C++入门】缺省参数、函数重载与引用(下)
【C++入门】缺省参数、函数重载与引用
|
5天前
|
编译器 C语言 C++
【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)
【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)
13 1
【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)
|
5天前
|
编译器 C语言 C++
c++初阶------类和对象(六大默认构造函数的揭破)-3
c++初阶------类和对象(六大默认构造函数的揭破)
|
5天前
|
编译器 C语言 C++
c++初阶------类和对象(六大默认构造函数的揭破)-2
c++初阶------类和对象(六大默认构造函数的揭破)
|
5天前
|
存储 编译器 C语言
c++初阶-------类和对象-2
c++初阶-------类和对象
|
5天前
|
安全 编译器 C语言
C++初阶------------------入门C++(三)
C++初阶------------------入门C++(三)
|
5天前
|
存储 Linux 编译器
C++初阶------------------入门C++(二)
C++初阶------------------入门C++(二)
|
5天前
|
编译器 C语言 C++
C++初阶------------------入门C++(一)
C++初阶------------------入门C++(一)
|
5天前
|
编译器 C语言 C++
【C++入门】缺省参数、函数重载与引用(上)
【C++入门】缺省参数、函数重载与引用