0

他のプログラマーのC++コードを読む際に、メソッドが3つのパラメーターを受け取ると混乱しますが、メソッドの呼び出しは1つしか渡しません。

例えば

.
.
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 に答える