默认的参数是一个函数的参数有一个提供给它的默认值。如果用户不提供此参数的值,将使用缺省值。如果用户提供的默认参数值,使用用户提供的价值。
考虑下面的程序:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
void
PrintValues(int
nValue1, int
nValue2=10){ using
namespace
std; cout
<< "1st
value: "
<< nValue1 << endl; cout
<< "2nd
value: "
<< nValue2 << endl;}int
main(){ PrintValues(1);
//
nValue2 will use default parameter of 10 PrintValues(3,
4); //
override default value for nValue2} |
该程序产生的输出如下:
第一值:1
第二值:10
第一值:3
第二值:4
在第一个函数调用,调用者不供应nvalue2争吵,所以函数使用默认值10。在第二次调用,调用者并供应nvalue2值,所以用户提供的值进行。
默认的参数是一个很好的选择,当函数需要一个值,用户可能会或可能不会想重写。例如,这里有几个函数原型的默认参数可能是常用的:
|
1
2
3
|
void
OpenLogFile(char
*strFilename="default.log");int
RollDie(int
nSides=6);void
PrintString(char
*strValue, Color eColor=COLOR_BLACK); //
Color is an enum |
|
1
2
3
4
5
|
void
PrintValues(int
nValue1=10, int
nValue2=20, int
nValue3=30){ using
namespace
std; cout
<< "Values:
"
<< nValue1 << "
"
<< nValue2 << "
"
<< nValue3 << endl;} |
|
1
2
3
4
|
PrintValues(1,
2, 3);PrintValues(1,
2);PrintValues(1);PrintValues(); |
将产生以下输出:
价值观:1 2 3
价值观:1 2 30
价值观:1 20 30
价值观:10 20 30
请注意,这是不可能也没有提供nvalue1和nvalue2提供的价值为nvalue3用户定义的值。这是因为C++不支持函数调用如printvalues(,,3)。这有两个主要的后果:
1)所有默认的参数必须是最右边的参数。以下是不允许的:
|
1
|
void
PrintValue(int
nValue1=10, int
nValue2); //
not allowed |
2)最左边的默认参数应该是一个最有可能被用户更改。
默认参数和函数重载
带缺省参数的函数可以被重载。例如,下面的是允许的:
本文详细介绍了C++中默认参数的概念及使用方法,包括如何为函数参数设置默认值、默认参数的位置规则,以及默认参数与函数重载的关系。
4621

被折叠的 条评论
为什么被折叠?



