调用C ++ / number参数不匹配的方法

时间:2012-06-01 15:11:04

标签: c++

在阅读其他程序员的C ++代码时,当方法需要3个参数时,我很困惑,但是对方法的调用只传递了一个。

例如

.
.
CarList myCarList;
read_next(myCarList);
.
.
size_t CarListReader::read_next(CarList &cl, bool theBool, size_t skip)

在java中,我知道基于方法签名的方法重载,但我不清楚在这种情况下C ++中发生了什么。

1 个答案:

答案 0 :(得分:10)

这是C ++代码。如果您找到函数的原型(可能在头文件中),您应该看到如下内容:

size_t CarListReader::read_next(CarList &cl, bool theBool = true, size_t skip = 4);

那些是default arguments,并且如果函数调用中没有提供它们将被使用。

您的困惑可能来自这样的事实:默认值是在函数原型中指定的(可能隐藏在某个头文件中),而不是函数定义中。如果没有原型*),它们将只在函数定义中。

*)在这种情况下,函数定义是原型别名声明。