0

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

例如

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

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

4

1 回答 1

10

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

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

这些是默认参数,如果函数调用中未提供它们,将使用它们。

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

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

于 2012-06-01T15:14:24.157 回答