什么是函数的默认参数
在函数声明的时候就在参数的后面给出一个确定的值,就像现在这样:
分开
#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++规定呢,函数的形参默认那里,第一个默认的后面就全要默认
第二个默认的它后面也都需要默认,就是谁被默认了,后面的全要被默认就对了。