函数默认参数
C++函数的形参列表中的形参可以有默认值
int func(int a, int b =10,int c =10){}
对于默认参数,使用函数可以为func(a),也可以func(a,b,c)将使用传入的值计算而不是默认值
1. 如果某个位置有了默认参数,那么从左至右都必须有
例如
int func(int a, int b=10, int c)//非法
2. 如果函数声明有默认参数,函数实现就不能有默认参数
int func(int a=10, int b = 10);
int func(int a=10, int b = 10){}//则为非法,出现了二义性,编译器不知道该按谁的来办,声明和实现只能有一条
如后面写为int func(int a, int b){}//则正确
函数占位参数
形参列表中可以有占位参数,用来做占位,调用函数时必须填补该位置
void func(int a, int)
调用函数必须要传入func(a,10);
//占位参数可以有默认参数void func(int a, int=10)
函数重载
函数名可以相同,提高复用性
函数重载的条件:同一个作用域下,函数名称相同,函数参数类型不同,或者个数不同,或者顺序不同
注意:函数的返回值不可以作为函数重载的条件
函数重载的注意事项
1.引用作为重载条件
void func(int &a){}
void func(const int &a){}
这两个是不同的参数类型
2.函数重载碰到函数默认参数
如
void func(int a){}
void func(int a, int b=10){}
二者不能同时存在