Open1

shallow copy, deep copy についてまとめてみる

yu.miyoshiyu.miyoshi

概要

シャローコピー(Shallow Copy)とディープコピー(Deep Copy)の違いについて記述をする

シャローコピー(Shallow Copy)とディープコピー(Deep Copy)の違い

どちらもデータをコピーしているが、コピー元がどこかという点が異なる
英語的には、Shallow:浅い、Deep:深いということ。これではまだわからない。。

シャローコピー(Shallow Copy)

オブジェクトを複製する際に、コピー元のオブジェクトとコピー先のオブジェクトがメモリ上の同じデータを参照している状態。
コピー元のデータに変更を加えると、コピー先のオブジェクトが参照しているデータが同じなので、コピー先のオブジェクトから見たインスタンス変数も変更される。
シャローコピーは、参照のコピーのみ。

ディープコピー(Deep Copy)

オブジェクトのみのコピーでなく、オブジェクトとメモリ上のデータの両方をコピーする。
二つのオブジェクトが参照しているデータは別々なので、一方のオブジェクトのインスタンス変数に変更を加えても、もう一方のオブジェクトには影響がない。

参考サイト

https://kurochan-note.hatenablog.jp/entry/20110316/1300267023
https://hacknote.jp/archives/28270/#:~:text=シャローコピーとはshallow,を参照しています。