スポンサードリンク
HOME > C++言語 > クラス機能 コピーコンストラクタ

C++言語 - クラス機能 コピーコンストラクタ

コンストラクタは、クラスのインスタンス作成時に自動的に呼ばれ、

クラスのメンバ変数の初期化などに用いられました。

その際、コンストラクタの引数には、定数、変数などの値を使用する事ができました。

 コンストラクタには、コピーコンストラクタと言うコンストラクタもあり、

これは、同じクラスオブジェクトを使って初期値する機能です。

普通の変数の初期化で例えると次のような考え方になります。

int a = 10;   // int型変数aを宣言し、10で初期化する。

int b = a;    // int型変数bを宣言し、同じint型変数aで初期化する。


通常のコピーコンストラクタは、引数に同じクラスオブジェクトの参照を用います。

クラスhitoのコピーコンストラクタ例

hito::hito(const hito &object) {
   初期化コード
}

コピーコンストラクタ使用例

ファイル名:hito.h
class hito {
public:
   int age;
   int sinchou;
   int taiju;

   // コンストラクタ
   hito(int age = 0, int sinchou = 0, int taiju = 0);

   // コピーコンストラクタ
   hito(const hito &object);

};


ファイル名:hito.cpp
#include "hito.h"

// コンストラクタ
hito(int age, int sinchou, int taiju) {
   this->age = age;
   this->sinchou = sinchou;
   this->taiju = taiju;
}

// コピーコンストラクタ
hito(const hito &object) {
   this->age = object.age;
   this->sinchou = object.sinchou;
   this->taiju = object.taiju;
}


ファイル名:main.cpp
#include "hito.h"

void main(void) {
   hito satou(20, 170, 60);  // コンストラクタ呼び出し
   hito suzuki(satou);     // コピーコンストラクタ呼び出し
                 // hito suzuki = satou;と
                 // 書いてもOK
}


この例では、クラスhitoのコピーコンストラクタの動作確認をしています。

まず、クラスhitoのインスタンスsatouを作成しています。

この時は、通常通り、コンストラクタが呼び出され、

satou.age、satou.sinchou、satou.taijuに、それぞれの値で初期化されます。

次に、クラスhitoのインスタンスsuzukiを作成しています。

この時は、コピーコンストラクタが呼び出され、suzukiのメンバ変数は、

satouのメンバ変数の値で初期化される事になります。



スポンサードリンク







HOME

言語解説編
プログラミング用語・知識

C言語

C++言語

Java

C#

Visual Basic.NET

アプリケーション編
C言語による
コンソールプログラミング




Copyright (C) プログラミングランド All Rights Reserved