函数的默认参数

什么是函数的默认参数

在函数声明的时候就在参数的后面给出一个确定的值,就像现在这样:

分开

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

我试试

在函数定义的时候默认参数怎摸样

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

这样不行哎( error C2660: “func1”: 函数不接受 0 个参数),只有在函数声明的时候默认参数才行,要不然相当于0个参数

(接上一个)为什么将函数定义移到前面就可呢

#include<iostream>
using namespace std;
int func1(int a, int b, int c);
int func1(int a = 10, int b = 20, int c = 30)
{
	return a + b + c;
}

int main(void)
{
	cout << func1() << endl;
	return 0;
}//我去了,太奇怪了,为什么将函数的实现移动到前面就可以呢

这个就没有报错,正常输出了。60

在函数定义和函数声明同时默认参数

//--------------------------函数定义和函数声明同时默认参数------------------------
#include<iostream>
using namespace std;
int func1(int a=10 , int b=20 , int c=30 );
int main(void)
{
	cout << func1() << endl;
	return 0;
}
int func1(int a = 10, int b = 20, int c = 30)
{
	return a + b + c;
}

这样是不可取的会报错,” 重定义默认参数“

总结一下

综上,声明有了,实现就不要用,他们两个只能一个有,同时出现的话会报错。
还有啊,为了保险起见,咱们呢就在
又有声明,又有定义(分开的),的情况下:默认值在声明那
只有定义的时候(合体的):就正常来咯(不然你还能放在哪里呢

不分开

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

又不想使用默认的怎末办?—咱可以改

    下面是改变的原则:
#include<iostream>
using namespace std;
int func3(int a = 10, int b = 20, int c = 30)
{
	return a + b + c;
}
int main(void)
{
	cout << func3(1) << endl;
	return 0;
}

输出51

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

输出33

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

输出6

经过我逐一的修改默认值后发现:这个的匹配是按从左到右的顺序进行的。如果你输入的是1,2那么只会给前两个参数进行修改,第三个就不会被修改。

实参的省略(默认参数怎末发挥作用的)

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

看,函数有了默认参数,就可以不必再写后面的啦,省略了时间是不是。
(当然你想要改默认的也可以啦,默认的当然可以改了,就像默认密码不就是可以修改吗)

氮素,可恶的规则又来啦(简单一点不好吗)

C++规定呢,函数的形参默认那里,第一个默认的后面就全要默认
第二个默认的它后面也都需要默认,就是谁被默认了,后面的全要被默认就对了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值