このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

さらに、コピー埋め込み方式のデメリット

コレクションの設計をミスったような気がする - 檜山正幸のキマイラ飼育記 メモ編 で、リストのようなコレクションのなかでは、要素へのポインターだけを保持して、要素自体をコピーして抱え込まないほうがいいかも、と書いた。

コピー&抱え込み方式は、パフォーマンスや相互参照の困難以外にも問題がある。それは、コピーコンストラクタ and/or 代入演算子を必要とすることだ。

これはけっこうバカにならない問題。まず、手間がかかる。管理するものと手間が増えると間違いも増える。例えば、オブジェクトのフィールド(メンバー変数)が増えると、コピー手順にも反映させないといけない。が、忘れる。すると、コピー時にオブジェクトが壊される(つうか、最初期化される)。コンストラクタや初期化手続きでちゃんと作ったオブジェクトが、コピー先では壊れている、と。

壊れたオブジェクトを含むシステムはヤバい。