在C++中,函数的参数可以有缺省值。
当调用有缺省参数的函数时,如果相应的参数没有给出实参,则自动用相应的缺省参数值作为其实参。
函数的缺省参数,是在函数原型中给定的。
如,
int init(int x=5, int y=10);
则如下调用是允许的:
init(100,80);
init(25);
init();
要求:
(0)在函数原型中给定函数的缺省参数。
void Fun(int x=0, int y=0); // 正确
void Fun(int x=0, int y=0) // 错误
{
//函数体
}
(1)在函数原型中,所有取缺省值的参数必须出现在不取缺省值的参数的右边。
int fun(int I,int j=5,int k); //错误
int fun(int I,int k,int j=5); //正确
(2)在函数调用时,若某个参数省略,则其后的参数皆应省略而采用缺省值。
init (,20) //错误
也就是说
- 函数参数若有缺省值,则从某个参数开始,后面都有缺省值
- 调用时,前面都是有值(输入的实参)的,后面都是用了缺省值
#include <iostream>
using namespace std;
int main()
{
void showValue(int x, int y, bool Max = true); // 声明函数
int a = 5, b = 10;
showValue(a, b);
showValue(a, b, false);
return 0;
}
void showValue(int x, int y, bool Max = true) // 定义函数
{
if (Max)
cout << "the bigger value is : " << ((x > y) ? x : y) << endl;
else
cout << "the smaller value is: " << ((x < y) ? x : y) << endl;
}
/*
void showValue(int x, int y, bool Max = true) // 定义函数
{
int result;
if (Max) {
result = (x > y) ? x : y;
cout << "the bigger value is: " << result << endl;
}
else {
result = (x < y) ? x : y;
cout << "the smaller value is: " << result << endl;
}
}
*/