C++入门学习(2)缺省参数

编程入门 行业动态 更新时间:2024-10-27 00:26:43

C++<a href=https://www.elefans.com/category/jswz/34/1770026.html style=入门学习(2)缺省参数"/>

C++入门学习(2)缺省参数

前言

        继上回我们学习了命名空间和在C++里面的输入输出之后,我们知道了命名空间可以解决C语言命名冲突的问题,也简单掌握了命名空间的使用,我们已经可以写出简单的C++代码,所以大家还是要继续练习敲代码,提高语感。

#include <iostream>
using namespace std;
int main()
{cout << "hello world" << endl;return 0;
}

而今天我们就继续来学习C++对C语言的改进,今天主要介绍的是缺省参数。

让我们一起往下学习吧!

一、缺省参数的诞生

1.1 缺省的意思

缺省是一种计算机的术语,大家理解成默认的意思就行,所以缺省参数的意思就是默认参数

1.2 缺省参数诞生的原因

既然缺省参数是一个参数,大家可以想一下什么的场景下会用到参数呢?用到函数的时候会用到参数对吧,大家继续想一下,在C语言中,我们没有给函数的形参传值的时候,函数的形参是不是都没有默认值,也就是,我们只要不传参数,就会编译错误,所以C++在这方面做了改善,给函数的形参增加了缺省值(默认值),大家知道这点之后,就让我们正式学习一下缺省参数吧!

二、缺省参数的定义

缺省参数是在声明或者定义函数时,为函数的参数指定一个缺省值(默认值)。

在调用该函数时,如果我们没有给指定的实参,则采用该形参的缺省值,否则使用指定的实参。

看下面代码和执行的结果:

#include <iostream>
using namespace std;
int Add(int x,int y = 3)
{return x + y;
}
int main()
{int sum1 = Add(2);int sum2 = Add(2,4);cout << "没有给y传入实参的sum1 = " << sum1 << endl;cout << "给y传入实参的sum2 = " << sum2 << endl;return 0;
}

从这里可以看出我们给y一个缺省参数为3
 

所以当我们传实参只传了个2的时候,只是给x传,而没有给y传,所以返回的就是5
 

但是当我们都传入了实参的时候,返回的就是6
 

这就应证了上面的话:在调用该函数时,如果我们没有给指定的实参,则采用该形参的缺省值,否则使用指定的实参。

那缺省参数可以怎么写呢?如果存在多个参数,我们可以随意地给缺省值吗?接下来就是我们下一个要学习的东西,缺省参数的分类

三、缺省参数的分类

3.1 全缺省参数

顾名思义,就是把所有的形参都给上缺省值

下面的代码就是把所有的形参都给了缺省值,这样的就叫做全缺省参数。我们写完函数体之后,肯定要调用我们的函数,但是这里就又出现了问题,我们应该如何去调用呢?

我们将下面的代码放到自己的编辑器上,就会发现如下报错:

#include <iostream>
using namespace std;
void Func(int a = 10, int b = 20, int c = 30)
{cout << "a = " << a << endl;cout << "b = " << b << endl;cout << "c = " << c << endl << endl;
}
int main()
{Func();      // 1Func(1);     // 2Func(1,2);   // 3Func(1,2,3); // 4Func(1,,3);  // 5 错误Func(,,3);   // 6 错误return 0;
}

这里的报错就说明的我们在调用含有缺省参数的函数时,传入的形参必须是从左往右依次传入,不能跳着给。

3.2 半缺省参数

既然知道了全缺省参数是全部的形参都给缺省值,那半缺省参数就是不给全部,只给一部分的形参 缺省值

那我们可以怎么给缺省值呢?可以跳着给吗?让我们一起看看吧!

我们如下三种代码,经过测试只有第一个是对的

所以也就是说半缺省参数,禁止跳着给,也禁止给左边不给右边

半缺省参数的规则就是:

从右往左依次给

void Func(int a, int b = 20, int c = 30)
{cout <<"a = "<< a << endl;cout <<"b = "<< b << endl;cout <<"c = "<< c << endl << endl;
}
void Func(int a = 10, int b, int c = 30)
{cout <<"a = "<< a << endl;cout <<"b = "<< b << endl;cout <<"c = "<< c << endl << endl;
}
void Func(int a = 10, int b = 20, int c)
{cout <<"a = "<< a << endl;cout <<"b = "<< b << endl;cout <<"c = "<< c << endl << endl;
}

在讲完这些,关于缺省参数还有一个重要的规则要说明一下

四、缺省参数在函数定义和函数声明中的规则

我们规定,缺省参数不能在函数的定义和声明中同时出现

如果函数定义和声明同时存在,缺省参数放到函数声明中。

由于函数的定义在主函数的上面再进行声明是冗余(多余)的声明,所以我把函数定义放在主函数下定义:

在这段代码中,我们的函数定义和函数声明是同时存在的,所以我们把缺省参数放在函数声明里,这个是可以正常运行的。

#include <iostream>
using namespace std;void Func(int a = 10,int b = 20,int c = 30 );int main()
{Func(1);Func(1,2);Func(1,2,3);return 0;
}
void Func(int a,int b,int c)
{cout <<"a = "<< a << endl;cout <<"b = "<< b << endl;cout <<"c = "<< c << endl << endl;
}

但是我在这里把缺省参数放到函数的定义里,不放在函数声明里,在调用的时候就会报错,这是为什么呢?

因为在我们的程序里,它会以函数声明为准,函数声明里都没有缺省参数,我们不可以用有缺省参数的形式来传参,所以里面两个会报错。

综上所述,我们以后在面对函数定义和函数声明同时存在的时候,需要用到缺省参数时,一定要放在声明中。

更多推荐

C++入门学习(2)缺省参数

本文发布于:2023-11-16 08:06:21,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1614589.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:入门   参数

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!