C++ クラスのコンストラクタのオーバーロードのサンプル

書式
class クラス名
クラス名(引数1) // コンストラクタ1
クラス名(引数1,引数2) // コンストラクタ2

クラスの同じコンストラクタ名です。違いは引数の数が異なっています。
関数名またはクラスのメンバ関数名またはコンストラクタ名が同じで引数の型や数が異なるものです。
渡す引数によって自動的に引数にあった関数またはメンバ関数またはコンストラクタが実行されます。
メソッド名、引数の型、引数の数の組み合わせをシグネチャ(signature)と呼びます。

使用例

#include <iostream>
using namespace std;

class City
{
private:
      string name; //メンバ変数名
public:
 City(string str1) // コンストラクタ
  {
    this->name = str1;
  };
public:
  City(string str1, string str2) // コンストラクタ
  {
    this->name = str1 + " と" + str2;
  }; 
public:
  void funA() // メンバ関数
  {
    cout << name << "\n";
  };
};

int main()
{
  City *c1 = new City("tokyo");
  c1->funA(); 

  City *c2 = new City("tokyo","oosaka");
  c2->funA(); 
}

実行結果
tokyo
tokyo とoosaka

C++

Posted by arkgame