在阅读其他程序员的C ++代码时,当方法需要3个参数时,我很困惑,但是对方法的调用只传递了一个。
例如
.
.
CarList myCarList;
read_next(myCarList);
.
.
size_t CarListReader::read_next(CarList &cl, bool theBool, size_t skip)
在java中,我知道基于方法签名的方法重载,但我不清楚在这种情况下C ++中发生了什么。
答案 0 :(得分:10)
这是C ++代码。如果您找到函数的原型(可能在头文件中),您应该看到如下内容:
size_t CarListReader::read_next(CarList &cl, bool theBool = true, size_t skip = 4);
那些是default arguments,并且如果函数调用中没有提供它们将被使用。
您的困惑可能来自这样的事实:默认值是在函数原型中指定的(可能隐藏在某个头文件中),而不是函数定义中。如果没有原型*),它们将只在函数定义中。
*)在这种情况下,函数定义是原型别名声明。