标题:c++中函数默认参数
1.函数默认值:
1.1
语法:返回值类型 函数名 (参数=默认值)
举例:
int func(int a,int b=20,int c=30)
{
return a+b+c;
}
int main()
{
cout<<func(10)<<endl;//输出60
cout<<func(10,30)<<endl;//输出70
}
若位置上没有数则使用默认值。
1.2
注意事项:
1.2.1
如果某个位置有了默认参数,那么这个位置从左到右都必须要有默认参数 。
void fun1(int a, int b=10);//正确
void fun2(int a, int b=10, int c=20);//正确
void fun3(int a=10,int b,int c=20);//这个写法是错误的。
1.2.2
如果函数声明有了默认参数,那么函数实现就不能有默认参数,函数声明和函数实现只能有一个有默认值,否则会产生二义性。
//错误示范:
void fun1(int a=10);//声明
void fun1(int a=10){......}//定义
//正确示范:
void fun2(int a=10);//声明
void fun2(int a){......}//定义
//正确示范:
void fun2(int a);//声明
void fun2(int a=10){......}//定义
2.函数的占位参数
2.1
语法:返回值类型 函数名 (数据类型)
2.2
注意事项:
1.占位参数只有参数类型声明,而没有参数名声明
2.一般情况下,在函数体内部无法使用占位参数
3.占位参数也可以有默认值!
2.3
函数的占位参数有什么意义:
1.为以后程序的扩展留下线索
2.兼容C语言程序中可能出现的不规范写法
3.函数的重载
3.1:
作用:函数名字可以相同,提高复用性
3.2:
需要满足的条件
1.在同一作用域下
2.函数名称相同
3.函数参数类型不同或者个数不同或者顺序不同
注意:函数的返回值类型不可以作为函数重载的条件。比如void fun(int a)不能重载为int fun(int a)
相关正确例子:void fun()、void fun(int a)、void fun(double a);void func(double a,float b)、void func(float a,double a)
3.3坑点:
第一个坑点:引用作为重载的条件
void fun(int &a)
{
a=10;
void fun(a);//接收的是一个变量
}
void fun(const int &a)
{
void fun(10);//接收的是一个常量
}
第二个坑点:重载函数碰到默认参数会产生矛盾
void fun1(int a,int b=10);//设为1号
void fun1(int a);//设为2号
假设我们这样调用函数fun(10),那么就和一号和二号函数都产生矛盾,假设我们换个方式调用fun(10,20),那么就不会产生矛盾。
以上是关于函数默认参数的部分笔记,如果错误欢迎大家指出。