コピーコンストラクタ

最終更新日03 Jul 2017 03:34

コピーコンストラクタとは?

自分のクラスを引数とするコンストラクタのことである

public Miffy(Miffy _src){//これはコピーコンストラクタ
//中にはコピーしたいメンバをコピーするようなコードを書く
}

コピーコンストラクタよりかはコピーファクトリーが良いらしい。[4]
コンストラクタとコピーコンストラクタの関係は典型的なオーバーロードの例である。
ただし、
関数の中で、一部は入力に依存するけど、あとの一部は全く同じ!という場合コードが重複になる。
そういった場合は共通部分の関数をprivateで書いておく。
たとえば、コンストラクタとコピーコンストラクタの場合はprivateinitという関数を書く、という手法は頻繁に使用される。[3]))

コピーコンストラクタが呼び出されるとき

  • オブジェクトが値渡しされるとき
bool function(Class c);

operator=とコピーコンストラクタは違う

operator=と似てるけど違う。
コピーコンストラクタは

Class c = a;

の時 つまり初期化で呼ばれる。
operator=
Class c;//<=ちなみにここではデフォルトコンストラクタが呼ばれる
c = a;//<=ここでoperator=が呼ばれる

コピーコンストラクタを書かないとどうなるか?

関数の引数としてオブジェクトを渡したときに、メンバ変数の値が変わってしまう。
なので、めんどくさいけど必ず作らないといけないもの。


assignment constructor copy return


ファイル

サポートサイト Wikidot.com assignmentconstructorcopyreturn