シャローコピーとディープコピーの違い
なにそれ?
シャローコピー(Shallow Copy)、ディープコピー(Deep Copy)、どちらもコピーすることには変りないのですが、何をコピーしているのかが違います。
はじめて聞いた人は何を言っているか訳がわからないと思いますが、
特にオブジェクト指向プログラミングにおいて、これを知らないと確実にハマります。
シャローコピー
シャローコピーというのは、コピー元のオブジェクトとコピー先のオブジェクトがメモリ上の同じデータ(インスタンス変数)を参照しています。
分かりにくいと思うので、図で示すとこんなイメージでしょうか。
ですので、コピー元のオブジェクトに対してインスタンス変数に変更を加えると、コピー先のオブジェクトが参照しているデータが同じ物なので、コピー先のオブジェクトから見たインスタンス変数も変更されることになります。
シャローコピーは、参照のコピーのみを行うということですね。