2012-06-01 71 views
0

在閱讀其他程序員的C++代碼時,我感到困惑,當方法需要3個參數時,但方法調用只通過一個。在C++中調用方法/數字參數不匹配

例如

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

在java中我知道,基於該方法的簽名方法重載的,但我不清楚什麼是用C事情在這種情況下++。

+3

這看起來不像C. –

+1

'::'命名空間解析運算符建議C++。 – dmckee

+0

它也不會按給定的方式編譯。 – Jon

回答

10

這是C++代碼。如果您發現該函數的原型(也許在一個頭文件),你應該看到這樣的事情:

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

這些都是default arguments,如果在函數調用不被提供,他們將被使用。

您的困惑可能來自這樣一個事實,即默認值是在函數原型中指定的(可能將其隱藏在某處的頭文件中),而不是在函數定義中。如果沒有原型*,它們只會在函數定義中)。

*)在這種情況下,函數定義是原型別名聲明。