1. 默认参数(声明时可用默认参数,定义时不能用)
#include <iostream>
using namespace std;
int sum(int arg1, int arg2, int arg3 = 10); //函数声明,第三个参数使用了默认参数
int main()
{
int a = 1, b = 2, c = 3;
int result1 = sum(a, b);
int result2 = sum(a, b, c);
cout<< "sum1=" << result1 << endl; //13 【1+2+10】
cout<< "sum2=" << result2 << endl; //6 【1+2+3】
}
int sum(int arg1, int arg2, int arg3) //函数定义
{
return arg1+arg2+arg3;
}
2. 默认参数设置规则:只能从右往左依次连续设置默认参数。
int func(int x, int y = 1, int z = 2); //正确
int func(int x = 0, int y, int z = 2); //错误
注意与函数调用时参数传递的区别,函数传参时是从左往右传递。
3. 同名函数的使用应避免产生歧义
#include <iostream>
using namespace std;
void func(int i)
{
cout<< "-----1-----" <<endl;
}
void func(int i, int j = 1)
{
cout<< "-----2-----" <<endl;
}
int main()
{
func(1); //(由于第二个func函数的第二个参数使用了默认参数)当调用这个函数时,会产生歧义 而不知道该调用哪一个func
func(1, 2);
}
//执行时报错:call of overloaded ‘fun(int)’ is ambiguous [重载的‘fun(int)’调用不明确]