1.函数的默认值
函数的形参列表中的形参是可以有默认值的。
语法:返回值类型 函数名 (参数 = 默认值){}
//函数的默认形参
//如果我们自己传入了数据,就用自己的数据
//语法:返回值类型 函数名 (参数 = 默认值){}
int add(int a=10, int b=20)
{
return a + b;
}
//注意事项
//1.如果某个位置已经有了默认参数,那么从这个位置以后都要有
//int func2(int a,int b = 10,int c) {
//}
//2.如果函数声明有默认参数,函数实现就不能用默认参数
int main() {
//
cout << add(1, 2) << endl;
system("pause");
return 0;
}
2.函数的占位参数
函数的形参列表里可以有占位参数,用来占位,调用函数时必须填补该位置。
//函数的占位参数:
//语法:返回值类型 函数名(数据类型){}
//占位参数可以有默认值
void func(int a, int=10) {
cout << "this is a function: " << endl;
}
int main() {
//调用函数,占用的位置必须有参数,但是目前这个参数用不了
func(10, 20);
system("pause");
return 0;
}
3.函数重载
作用:函数名可以相同,提高代码复用性。
函数重载满足条件
(1)同一个作用于(全局、局部等)。
(2)函数名称相同。
(3)函数参数类型不同或者个数不同或者顺序不同
4.函数重载注意事项
4.1 引用作为函数重载的条件
4.2 函数重载遇到默认参数:就很容易出现二义性,报错,尽量避免这种情况。
//引用作为函数重载
void func(int & a) {
cout << "func(int & a)" << endl;
}
//重载函数
void func(const int & a) {
cout << "func(const int & a)" << endl;
}
int main() {
//调用第一个函数
int a = 10;
func(a);
//调用第二个函数
func(2);
system("pause");
return 0;
}