1.函数的默认参数
//如果b有了默认值,其后面的变量都要有默认值
int fun(int a, int b=10, int c=15)
{
return a + b + c;
}
//声明和定义只能一个里面写默认值。否则,当声明和定义里的默认参数不一样,会产生歧义。
int fun2(int a, int b = 100);
int fun2(int a, int b )
{
return a + b;
}
2.//函数的占位参数
fun3里的int就是。占位参数也可以有默认值int =100
void fun3(int a,int)
{
cout << "函数的占位参数" << endl;
}
fun3(1,2); //赋给相应类型的值即可
3.//引用作为函数参数
第一个不加const的,里面得是个变量,第二个加上了const,里面赋给的要是常量。
void f1(int &a)
{
cout << "f1(int &a)被调用了" << endl;
}
int a = 100;
f1(a); //f1(int &a)被调用了
void f1(const int& a)
{
cout << "f1(const int &a)被调用了" << endl;
}
f1(10); //f1(const int &a)被调用了
4.函数的重载
条件:
-参数个数不同-参数类型不同-参数个数不同
函数名称相同
函数的作用域相同
int add(int a, int b)
{
return a + b;
}
int add(int a, int b,int c)
{
return a + b+c;
}
float add(float a, float b)
{
return a + b;
}
cout << add(1, 2)<< endl;
cout << add(1, 2,3) << endl;
cout << add(1.1, 2.2) << endl;
*函数的返回值类型不同,不能作为函数重载的条件。
float add(float a, float b)
{
return a + b;
}
int add(float a, float b)
{
return a + b;
} //这样会报错,无法重载仅按返回类型区分的函数
5.函数重载中碰到函数默认参数,容易引发歧义
void fun(int a, int b = 10)
{
cout << "有默认参数的函数被调用了" << endl;
}
void fun(int a)
{
cout << "无默认参数的函数被调用了" << endl;
}
fun(2022); //会报错。不知道调用的是哪个