2017-04-12 4 views
0

オブジェクト1を指しているポインタを持つオブジェクトがあるとします。本当の "ディープコピー"を実行するとき、どのくらい深く行きますか?

オブジェクト1がポインタでない場合、オブジェクト1のクローンをオブジェクト2とし、新しいポインタbポインタbは元のオブジェクトのコピーに配置されたものです。

これはディープコピーの仕組みです。

オブジェクト1が別のオブジェクトを指すポインタの場合はどうなりますか?深いコピーのためにこれらのオブジェクトの両方のコピーを作成しますか?または単に「最初のレベル」のオブジェクトですか?

真に深いコピーを実行するとき、基本的にどのくらい深く行きますか?私はあなたができるだけ深く行き、すべてをコピーすると思うが、私は二重チェックしたい。

ありがとうございました。

答えて

0

原則として、真の「ディープコピー」はすべてをコピーします。すべてのネストされたオブジェクトを再帰的に深くコピーします。

しかし、これは必ずしも実用的であるとは限りません。それはあなたの特定の状況によって異なります。

  • あなたのデータ構造はサイクルが含まれているか、同じオブジェクトを複数回を参照している場合、あなたは何とかこれを追跡し、対処する必要がありますまたはコピーが無限

  • に進みます

    一部のオブジェクトは、コピーを作成せずにポインタで参照するのが「安全」である可能性があります(たとえば、それらが不変の場合など)、そのコピーは無駄かもしれません。コピープロセスからこれらを特に除外したい場合があります。

+0

私が思ったことを確認していただきありがとうございます。私は以前にはなかったことを考慮する興味深い事例を提起します。それらを指摘していただきありがとうございます。 – User

関連する問題