这叫什么样的功能?

时间:2015-10-15 05:22:30

标签: c++ function

我看到了一些代码片段,其中我看到了无法理解的函数调用。它就是这样的

 void recursion(int v,int p=0)     //Definition
 {
         //whatever in the body
 }


  main()
 {
         //something ...
         recursion(0);// *_*
 }

我在学校里被告知,调用和定义应该有相同数量的参数。但在这里我无法理解。看起来参数的数量可能不同。

2 个答案:

答案 0 :(得分:1)

这称为默认参数值。必须在没有默认参数值的其他参数之后指定它们。

然后,如果您未在函数调用中指定参数,则将使用该值。

如果您有多个默认参数,请说:

void f(int first, int second = 0, char* third = "");

如果要省略前一个默认值,则必须省略以下默认值:

//You can do
f(0);
f(1, 2);
//but not
f(1, "Three");

答案 1 :(得分:1)

此调用等于:

 main()
 {
         //something ...
         recursion(0,0);// *_*
 }

因为第二个变量的默认值是0。