次のタイミングで呼び出される 1. 代入初期化 > Hoge obj2 = obj1; つぎはただの代入 > obj3 = obj1; 2. 仮引数 > func( obj ) func 終了時にデストラクタが呼ばれるので二重削除の原因になる。
class Hoge { ... Hoge( const Hoge &obj ); }; Hoge::Hoge( const Hoge &obj ){ val = obj.val; p = new Hage( *(obj.p) ); ... }
仮引数が const object なので,const method しか呼び出せないことに注意! constメンバ