C++ 省略可能引数を使ったメンバ関数

メンバ関数は、通常の関数のように省略可能引数を使う事が可能です。

省略可能引数を使った通常の関数についてはコチラ

#include <iostream>

using namespace std;

class keisan {
public:
      int tasizan(int a, int b, int flg = 0) {

            int ans;
            ans = a + b;

            if (flg == 1) {
                  cout << ans << '\n';
            }
            return ans;
      }
};

void main(void) {
      int ans_tasizan = 0;
      keisan obj;

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

      cout << ans_tasizan << '\n';

      ans_tasizan = obj.tasizan(20, 5, 1);      // 第3引数を指定

}

このプログラム例では、
クラスkeisanのメンバ関数tasizanの第3引数が省略可能引数になっています。

メンバ関数tasizanは、足し算結果を求める関数です。
また、オプション機能として、第3引数flgの値が1の場合は、
足し算結果の表示も可能になっています。


省略可能引数を記述する場所について

上記の例では、クラス定義の中にメンバ関数の実装を記述し、
メンバ関数の引数のところへ、直接省略可能引数を記述しました。

通常は、クラス定義と実装ファイルを分けるので、
クラス定義の部分にメンバ関数のプロトタイプと共に省略可能引数を記述し、
実装ファイルには、省略可能引数を記述しない方法が一般的です。

ヘッダファイルとソースファイルに分けた記述

ファイル名:keisan.h

#include <iostream>

using namespace std;

class keisan {
public:
      int tasizan(int a, int b, int flg = 0);
};

ファイル名:keisan.cpp

#include "keisan.h"
#include <iostream>

using namespace std;

int keisan::tasizan(int a, int b, int flg) {      // 省略可能引数記述なし

      int ans;
      ans = a + b;

      if (flg == 1) {
            cout << ans << '\n';
      }
      return ans;
}

ファイル名:main.cpp

#include "keisan.h"
#include <iostream>

using namespace std;

void main() {
      int ans_tasizan = 0;
      keisan obj;

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

      cout << ans_tasizan << '\n';

      ans_tasizan = obj.tasizan(20, 5, 1);      // 第3引数を指定
}