C++の基礎:クラスのコンストラクタを学ぶ

提供: Support
移動先: 案内検索

概要

オブジェクト指向プログラミングとは、データ(オブジェクトの属性プロパティ)やコードブロック(オブジェクトのメソッド関数)を含むオブジェクトを統合する方法です。これらの属性やメソッドは、クラスに属する変数や関数であり、一般的には「クラスメンバ」と呼ばれています。


この記事では、C++のコンストラクタとは何か? C++でコンストラクタを作成するにはどうすればよいか? コンストラクタを呼び出すにはどうすればよいか?、といった疑問にお答えします。


C++のコンストラクタは関数であり、クラス内のメソッドですが、クラスのオブジェクトが作成されるときに自動的に呼び出される「特別なメソッド」です。プログラマがこの関数を呼び出す必要はありません。クラスの新しいオブジェクトが作成されるたびに、コンストラクタはクラスのメンバ変数を初期化したり、ストレージを割り当てたりすることができます。これが、この特別なメソッドにコンストラクタという名前が与えられている理由です。

C++におけるコンストラクタの作成

コンストラクタを作成するには、以下のコード例のようにクラス名と同じ名前の後に()括弧をつけます。

class THuman  
{         
  public:   
    THuman()
    {
       std::cout << "I was born!\n";
    };
};

C++におけるコンストラクタの呼び出し

コントラクターを呼び出すには、以下のコード例のように、クラスを持つ新しいオブジェクトを作成するだけで、自動的に呼び出されます。

THuman worker;

C++におけるコンストラクタの例

ここでは、コンストラクタの定義と新しいオブジェクトの作成に関する完全なコードを紹介します。

#include <iostream>
#include <string>
 
class THuman  
{         
  public:   
    THuman()
    {
       std::cout << "I was born!\n";
    };
};
 
int main() 
{
  THuman worker;   // Create an Object from a Class and Constructor will be called here
 
  return 0;
}

コンストラクタはクラスと同じ名前で、常にpublicであり、戻り値を持たないことに注意してください。ただし、コンストラクタはパラメータを持つことができます。

C++におけるパラメータ付きコンストラクタ

コンストラクタは戻り値を持ちませんが、パラメータを持つことができます。以下の例では、THuman クラスの任意のオブジェクトの名前、年齢、身長を設定するコンストラクタを定義しています。

class THuman
{
  public:
 std::string name;
        int age, height;
 
 THuman(std::string n, int a, int h)
 {
           name = n;
           age = a;
           height = h;
 };
};

これで、以下のようにWorker1オブジェクトの作成と設定を同時に行うことができます。

THuman worker1("Kate", 35, 170);


C++におけるパラメータ付きコンストラクタの例

以下のコードは、2人のワーカーを作成し、各パラメータを設定するコンストラクタの完全な例です。

class THuman
{
  public:
 std::string name;
    int age, height;
 
 THuman(std::string n, int a, int h)
 {
       name = n;
       age = a;
       height = h;
 };
};
 
int main()
{
  THuman worker1("Kate", 35, 170); // Create and Construct worker1 Object
  THuman worker2("Tom", 23, 168);  // Create and Construct worker2 Object
 
  // Print worker attributes
  std::cout << worker1.name << " | " << worker1.age << " | " << worker1.height << "\n";
  std::cout << worker2.name << " | " << worker2.age << " | " << worker2.height << "\n";
 
  getchar();
  return 0;
}

関連情報