ためになるホームページ お問い合わせ




TOP > C++ > コンストラクタとデストラクタ
コンストラクタとは?
プログラムをしている方は、変数の初期化の重要性がわかると思います。初期化を忘れることによって、メモリの不正アクセス等が起こる原因となり初期化の重要性がわかると思います。クラスには特殊なメソッドが用意されており、クラスのインスタンス生成時に呼ばれるメソッドがコンストラクタといいます。
以下にコンストラクタの特徴を示します。
コンストラクタは、必ずクラスに一つはあり戻り値を持ちません
コンストラクタはオーバーロードする事もできます。
コンストラクタはクラス名と同じ名前です。
コンストラクタを必ずしも宣言する必要はありません。

コンストラクタの例
#include <iostream>
using namespace std;
class parentC
{
private:
  int privateA;
public:
  parentC();
  parentC(int a);
};

parentC::parentC()
{
  cout << "引数なしのコンストラクタが呼ばれました" << endl;
}

parentC::parentC(int a)
{
  privateA = a;
  cout << "引数ありのコンストラクタが呼ばれました" << endl;
  cout << "受け取った値をメンバ変数に格納して、その値は 「" << privateA << "]です" << endl;
}

int main()
{
  parentC test;
  parentC test2(3);

  return 0;
}


コンストラクタ内でメンバの初期化
コンストラクタ内のメンバ変数を初期化するには、普通に上記の例のように直接代入する方法と、初期化リストを使う方法がある。通常は初期化リストを使うのが望ましい。

初期化リストの例
#include <iostream>
using namespace std;
class parentC
{
private:
  int privateA;
public:
  parentC(int a);
};

parentC::parentC(int a)
 : privateA(a)
{
  cout << "引数ありのコンストラクタが呼ばれました" << endl;
  cout << "受け取った値をメンバ変数に格納して、その値は 「" << privateA << "]です" << endl;
}

int main()
{
  parentC test(3);

  return 0;
}


デストラクタとは?
デストラクタはコンストラクタの逆で、インスタンス消滅時に自動的に呼ばれる特殊メソッド。デストラクタはコンストラクタと違い、オーバーロードはできない






Copyright 2007 ためになるホームページ All Rights Reserved.