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) // 誤り
{
...
}
次のようなコードを実行してみよう!
どんな結果になるでしょうか?
Void SayHello(AChar* str = "World")
{
DBGPRINTF("Hello %s", str);
}
Void TestArgDefault(Void)
{
SayHello();
SayHello("honey");
}