1、函数的默认参数
(1)如果我们自己传入数据。就用传入数据,如果没有,则用默认值
(2)如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值
(3)如果函数声明有默认参数,则函数实现不能有默认参数
void func(int a,int b,int c=3)
{
cout << "a=" << a << endl;
cout << "b=" << b << endl;
cout << "c=" << c << endl;
}
int main()
{
func(1, 2); //输出结果为a=1 b=2 c=3
return 0;
}
2、占位参数
返回值类型 函数名 (数据类型) {}
注意:占位参数要传入数值
//有占位参数的函数,也可以有普通参数、默认参数
void func2(int,int b,int a=30)
{
cout << "this is func2";
}
int main()
{
func2(10,20); //占位参数也要传入数值
return 0;
}
3、函数重载
(1)函数重载满足条件:
a同一个作用域下
b函数名称相同
c函数参数类型不同 或者 个数不同 或者 顺序不同
( 函数的返回值不可以作为函数重载的条件)
(2)注意事项
a引用作为重载条件,是否加const修饰引用可以作为重载的条件
void func(int& a) //int a=10,传入a调用
{
cout << "func(int& a)调用" << endl;
}
void func(const int& a) //const int b =20,传入b调用,或者直接传入常量20调用
{
cout << "func(const int& a)调用" << endl;
}
int main()
{
int a = 10;
const int b = 20;
func(a);
func(b);
func(20);
return 0;
}
b函数重载碰到默认参数(当函数重载碰到默认参数,出现二义性,报错,尽量避免写函数重载又加默认参数的情况)
void func2(int a, int b = 10)
{
cout << "func2(int a, int b = 10)" << endl;
}
void func2(int a)
{
cout << "func2(int a)" << endl;
}
int main()
{
int a = 5;
func2(a); //当函数重载碰到默认参数,出现二义性,报错,
//尽量避免写函数重载又加默认参数的情况
return 0;
}