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