引数のデフォルト値


C++ 言語では、関数の引数にデフォルト値を指定することができます。

たとえば、指定された日付のタイムスタンプ (1970年1月1日からの秒数) を計算する関数を考えてみましょう。


SIntN CalcTimestamp(SIntN year, SIntN month = 1, SIntN date = 1)

{

    ...

}

このように、引数のデフォルト値を宣言しておくと、 引数を指定しなくても値が指定されたものとして関数を呼び出すことができます。


x = CalcTimestamp(1998);       // 1998年1月1日 のタイムスタンプを計算

x = CalcTimestamp(1998,5);     // 1998年5月1日 のタイムスタンプを計算

x = CalcTimestamp(1998,5,6);   // 1998年5月6日 のタイムスタンプを計算

デフォルト値のある引数は、 デフォルト値のない引数よりもうしろに指定しなければなりません。 たとえば、次のような関数宣言は誤りです。


SIntN CalcTimestamp(SIntN year = 2000, SIntN month, SIntN date)  // 誤り

{

    ...

}



SIntN CalcTimestamp(SIntN year, SIntN month = 1, SIntN date)     // 誤り

{

    ...

}

【Java では】 Java では、引数のデフォルト値を指定することはできませんが、 同じことはメソッドのオーバーロードにより実現できます。

この章のまとめ

やってみよう

次のようなコードを実行してみよう!
どんな結果になるでしょうか?


Void SayHello(AChar* str = "World")

{

    DBGPRINTF("Hello %s", str);

}



Void TestArgDefault(Void)

{

    SayHello();

    SayHello("honey");

}