C++ 省略可能引数について

関数の引数に省略可能な引数を設定する事ができます。

省略可能な引数を持った関数を呼び出す時は、
その省略可能引数の部分を指定しなかった場合は、
あらかじめ設定されているデフォルト値が適用されます。

#include <iostream>

using namespace std;

int tasizan(int a, int b, int flg = 0);

void main(void) {
      int ans_tasizan = 0;

      ans_tasizan = tasizan(20, 5);      // 第3引数を省略

      cout << ans_tasizan << '\n';

      ans_tasizan = tasizan(20, 5, 1);      // 全ての引数を指定

}

このプログラムは、足し算結果を表示するプログラムです。

関数tasizanは、足し算結果を求める関数です。

また、オプション機能として、
第3引数flgの値により、足し算結果の表示も可能です。

関数tasizanには、省略可能引数flgが設定されています。

引数flgの値を指定せずに関数tasizanを呼び出すと、
引数flgには、関数tasizanのプロトタイプ宣言で指定したデフォルト値
代入されます。この場合は、0が代入されます。

また、普通に第3引数を指定して呼び出すと、
通常通りに引数が渡されます。

省略可能引数を用いる場合に注意する点があります。

 1.むやみに省略可能引数を使わず、無理なく自然に使用する事。

 2.省略可能引数は、引数並びの一番後ろの部分に持ってくる事。

int tasizan(int a, int b, int flg = 0);            // 問題なし。
int tasizan(int a, int b = 5, int flg = 0);        // 問題なし。
int tasizan(int a = 3, int b = 5, int flg = 0);    // 問題なし。
int tasizan(int a, int b = 5, int flg);            // エラー。