C++学习笔记:缺省参数

1.概念

缺省参数可以理解为默认的意思,在声明或定义一个函数时给函数的参数指定一个默认的值,在调用这个函数时如果不传入参数,那函数就使用默认的参数值,若调用时传入了参数,那就用传入的值,举个栗子:

#include<iostream>

using namespace std;

void func(int a = 10)
{
	cout << a << endl;
}

int main()
{
	func();  // 不传参 则用缺省值
	func(100);  //传参,用传参值

	return 0;
}

调用了两次func函数,运行结果如下:
在这里插入图片描述

2.分类

1.全缺省参数

全缺省参数:顾名思义,在声明或定义这个函数时必须为每一个参数定义默认的初始值,这样在调用这个函数的时候参数都有默认值,举个栗子:

#include<iostream>

using namespace std;

//全缺省参数
void func(int a = 10 , int b = 100 , int c = 1000)
{
	cout << a << endl<< b << endl << c << endl;
}

int main()
{
	func();  // 不传参 则用缺省值
	func(20 , 200 , 2000);  //传参,用传参值

	return 0;
}

传参和不传参后,两次函数调用的运行结果如下:
在这里插入图片描述

不过有一点要注意,当函数调用是部分传参时,参数由左向右一次传值,举个栗子:

#include<iostream>

using namespace std;

//全缺省参数
void func(int a = 10 , int b = 100 , int c = 1000)
{
	cout << a << endl<< b << endl << c << endl;
}

int main()
{
	func();  // 不传参 则用缺省值
	func(20 , 200 , 2000);  //传参,用传参值

	func(11);  //部分传参 ,由左向右一次传值
	func(11 , 111);  //部分传参 ,由左向右一次传值
	func(11 , 111 , 1111);  //部分传参 ,由左向右一次传值


	return 0;
}

上面的代码我有只传了一个参数的,也有全部传参的,由结果可以看出缺省参数是由最左边向右依次传值的:
在这里插入图片描述

2.半缺省参数

半缺省参数:顾名思义,就是命名或定义一个函数时,只有一部分参数是设置默认值的,而没有设置默认值的部分在调用的时候必须传参,调用的值首先传值到未定义默认值的参数,再由左向右依次传值,并且 ,未定义默认值的参数必须从第一个参数开始,举个栗子:

#include<iostream>

using namespace std;

//半缺省参数
void func(int a , int b = 100 , int c = 1000)
{
	cout << a << endl << b << endl << c << endl;
}

int main()
{
	func(10); //至少传一个值,为未定义默认值的参数值
	func(11, 111); // 从第一个缺省参数开始依次向右传值
	func(11, 111, 1111);

	return 0;
}

3.注意事项

  1. 半缺省参数必须从右往左依次给出,不能间隔传值
  2. 缺省参数不能在函数声明和定义中同时出现,一般是声明定义缺省参数,定义不设置缺省参数,否则编译器将不清楚到底应该用哪一个缺省值
  3. 缺省值必须是常量或者全局变量

完结~❀❀❀

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值