関数の引数にデフォルト値を設定するためには、関数の仮引数に初期値を併記します。
関数の仮引数に初期値を設定すると、該当の実引数が省略された場合に初期値が設定されるようになります。
// 四捨五入する関数 int round(float value, int precision = 2) { // 四捨五入のコード } round(3.141592); // OK round(3.141592, 4); // OK round(); // NG! 第1引数はデフォルト値が無い round(, 4); // NG! 引数の途中を省略することはできない
このように定義した関数で第2引数を省略すると、仮引数の precision = 2 より precision の初期値として2が設定されます。たとえば round(3.141592) と実行すると round(3.141592, 2) と実行したのと同じ意味になります。もちろん第2引数を明示的に書いた場合は実引数の値が precision の値になります。たとえば round(3.141592, 4) と実行した場合は precision は4になります。
また、引数を省略した場合は、続く引数を省略することはできても、続く引数を指定することはできません。たとえば次のような指定はコンパイルエラーになります。
void SomeFunc(one = 1, two = 2, three = 3) { } SomeFunc(); // OK SomeFunc(1); // OK SomeFunc(1, 2); // OK SomeFunc(1, 2, 3); // OK SomeFunc( , 2, 3); // NG SomeFunc( , , 3); // NG SomeFunc( , 2, ); // NG
Contributions