C++ コンストラクタ 複数 オーバーロード 多重定義

コンストラクタは、メンバ関数のように
多重定義(オーバーロード)が可能です。

メンバ関数の多重定義(オーバーロード)についてはコチラ

class Cdata {
public:
      int a;
      int b;
      int c;

      // コンストラクタ
      Cdata() {
            a = 0;
            b = 0;
            c = 0;
      }

      // 引数が1つのコンストラクタ
      Cdata(int data1) {
            a = data1;
            b = 0;
            c = 0;
      }

      // 引数が2つのコンストラクタ
      Cdata(int data1, int data2) {
            a = data1;
            b = data2;
            c = 0;
      }

      // 引数が3つのコンストラクタ
      Cdata(int data1, int data2, int data3) {
            a = data1;
            b = data2;
            c = data3;
      }
};

void main() {
      // 引数なしのコンストラクタ呼び出し
      Cdata obj1;

      // 引数が1つのコンストラクタ呼び出し
      Cdata obj2(5);

      // 引数が2つのコンストラクタ呼び出し
      Cdata obj3(5, 10);

      // 引数が3つのコンストラクタ呼び出し
      Cdata obj4(5, 10, 50);
}

この例では、クラスCdataのコンストラクタを複数作成した例です。

それぞれ、引数なし、引数1,2,3個のコンストラクタが
多重定義(オーバーロード)されています。

それぞれのコンストラクタの呼び出し方は、
実際にクラスのインスタンスを作る時に、
インスタンス名の後ろにカッコをつけて、
関数のように引数を記述します。

引数を指定しなかった場合、
引数なしのコンストラクタが呼び出されます。

引数を1つ指定した場合は、引数1個のコンストラクタが呼び出されます。
それぞれ2個、3個の場合も同様です。

とても便利な機能なので、是非活用してください。

タイトルとURLをコピーしました