赞
踩
在C++中,函数的形参列表中的形参是可以有默认值的。
语法:
返回值类型 函数名 (参数 = 默认值){}
举例
1、未使用函数默认参数时
int func(int a, int b, int c)
{
return a + b + c;
}
int main()
{
cout << func(10, 20, 30) << endl;
system("pause");
return 0;
}
2、使用函数默认参数,情况 1
int func(int a, int b = 20 , int c = 30)
{
return a + b + c;
}
int main()
{
cout << func(10) << endl;
system("pause");
return 0;
}
3、使用函数默认参数,情况 2
如果我们自己在调用函数时传入数据,就用自己的数据,如果没有,那么用默认值
int func(int a, int b = 20 , int c = 30)
{
return a + b + c;
}
int main()
{
cout << func(10,30) << endl; 此时计算的 b 是 30
return 0;
}
注意事项
注意事项 1、如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值 int func2(int a = 10, int b, int c, int d) 错误,因为 a 有默认值,则 a 后面的参数都要有默认值 改正: int func2(int a = 10, int b = 20, int c = 30, int d = 40) { return a + b + c; } 2、如果函数声明有默认参数,函数实现就不能有默认参数, 函数调用时也不能传递参数 声明和实现只能有一个有默认参数 int func2(int a = 10, int b = 20); 函数声明 int func2(int a, int b) 函数实现 { return a + b; }
C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置
语法:
返回值类型 函数名 (数据类型) {}
占位参数 还可以有默认参数
void func(int a , int)
{
cout << "this is func " << endl;
}
int main()
{
func(10,10);
system("pause");
return 0;
}
作用:函数名可以相同,提高复用性
函数重载满足条件:
注意:函数的返回值不可以作为函数重载的条件
void func() 第一个 { cout << "func 的调用" << endl; } void func(int a) 第二个 { cout << "func (int a) 的调用" << endl; } void func(double a) 第三个 { cout << "func (double a) 的调用" << endl; } void func(int a, double b) 第四个 { cout << "func (int a, double b) 的调用" << endl; } void func(double a, int b) 第五个 { cout << "func (double a, int b) 的调用" << endl; } 注意事项 函数的返回值不可以作为函数重载的条件 int func(double a, int b) 这不是一个函数重载,不可用 { cout << "func (double a, int b) 的调用" << endl; } int main() { func(); 第一个 func(10); 第二个 func(3.14); 第三个 func(10, 3.14); 第四个 func(3.14,10); 第五个 system("pause"); return 0; }
函数的返回值不可以作为函数重载的条件
C++学习笔记9: 引用.
1、引用作为重载的条件 void func(int &a) int &a = 10; 不合法 { cout << "func(int &a)调用" << endl; } void func(const int &a) const int &a = 10; 合法 { cout << "func(const int &a)调用" << endl; } int main() { int a = 10; func(a); func(10); system("pause"); return 0; }
2、函数重载碰到默认参数 void func2(int a ,int b = 10) { cout << "func2(int a , int b) 的调用" << endl; } void func2(int a) { cout << "func2(int a ) 的调用" << endl; } int main() { func2(10); 只传 1 个参数,此时上面的两个函数,都可以调用, 当函数重载碰到默认参数,出现二义性,报错,尽量避免这种情况 当写函数重载时,就不要写默认参数 func2(10,20); 传两个参数,肯定是调用第一个 system("pause"); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。