浅いコピーとは何ですか?

質問者:Andrejs Venteo |最終更新日:2020年2月20日
カテゴリ:テクノロジーおよびコンピューティングプログラミング言語
4.6 / 5 (220ビュー。38票)
浅いコピーは、オブジェクトのビット単位のコピーです。元のオブジェクトの値の正確なコピーを持つ新しいオブジェクト作成されます。オブジェクトのフィールドのいずれかが他のオブジェクトへの参照である場合は、単に参照アドレスがすなわちコピーされ、唯一のメモリアドレスがコピーされます

その中で、ディープコピーとシャローコピーの違いは何ですか?

ディープコピーは、オブジェクトが参照先のオブジェクトと一緒にコピーされるときに発生します。浅いコピーは、オブジェクトのビット単位のコピーです。新しいオブジェクトは、元のオブジェクト値の正確なコピーを持って作成されます。

続いて、質問は、C ++の浅いコピーとは何ですか?オブジェクトの浅いコピーは、すべてのメンバーフィールド値をコピーします。これは、フィールドが値の場合はうまく機能しますが、動的に割り当てられたメモリを指すフィールドには適さない場合があります。ポインタがコピーされます。デフォルトのコピーコンストラクタと代入演算子は、浅いコピーを作成します。

また、なぜ浅いコピーが必要なのですか?

cloneメソッドのデフォルトの実装使用する場合は常に、オブジェクトの浅いコピー取得します。これは、新しいインスタンスを作成し、オブジェクトのすべてのフィールドをその新しいインスタンスにコピーして、オブジェクトタイプとして返​​すことを意味します。これを、元のオブジェクトに明示的にキャストする必要があります。これはオブジェクトの浅いコピーです。

配列の浅いコピーとは何ですか?

配列の浅いコピーは、参照型か値型かに関係なく、配列の要素のみをコピーしますが、参照が参照するオブジェクトはコピーしません。新しい配列の参照は、元の配列の参照が指すのと同じオブジェクトを指します。

36関連する質問の回答が見つかりました

ディープコピーとは何ですか?

ディープコピーとは、C#で、インスタンスメンバーと参照メンバーが指すオブジェクトの両方のコピーを含むようにオブジェクトのコピーを作成する手法を指します。ディープコピーは、元のデータを参照せずに新しいコピー(クローン)が作成されるシナリオで使用されます。

どのようにしてディープコピーを作成しますか?

ファイルを作成せずに、シリアル化を使用してディープコピー作成できます。ディープコピーするオブジェクトは、シリアライズ可能を実装する必要があります。クラスがfinalでないか、変更できない場合は、クラスを拡張してシリアライズ可能を実装します。 orgを使用して、シリアル化ベースのディープクローンを作成できます

浅い平等とは何ですか?

浅い比較は、文字列、数値などのプリミティブ型の場合は2つの値が等しいかどうかをチェックすることで機能し、オブジェクトの場合は参照をチェックするだけです。 shallowCompareは、現在のpropsオブジェクトとnextPropsオブジェクト、および現在の状態オブジェクトとnextStateオブジェクトに対して浅い等価性チェックを実行します。

浅いマージとは何ですか?

浅いマージでは、最初のオブジェクトのプロパティが2番目のオブジェクトの同じプロパティ値で上書きされます。例を見てみましょう。

クローンは浅いコピーですか?

clone ()は確かに浅いコピーです。ただし、オブジェクトがCloneableを実装していない限り、CloneNotSupportedExceptionをスローするように設計されています。また、Cloneableを実装するときは、 clone ()をオーバーライドして、それ自体がクローン可能なすべてのフィールドでclone ()を呼び出して、ディープコピーを実行する必要があります。

シャローコピーJavaとは何ですか?

浅いコピーはオブジェクトへの参照ポインタのコピーであり、深いコピーはオブジェクト自体のコピーです。 Javaでは、オブジェクトはバックグラウンドで保持されます。オブジェクトを処理するときに通常操作するのはポインターです。変数名は、オブジェクトのメモリ空間を指します。

Pythonでどのように浅くコピーしますか?

浅いコピーは、新しい複合オブジェクトを作成し、(可能な範囲で)元のオブジェクトで見つかったオブジェクトへの参照を挿入します。ディープコピーは、新しい複合オブジェクトを作成し、その後、元のオブジェクトで見つかったオブジェクトのコピーを再帰的に挿入します。

浅いクローンgitとは何ですか?

Gitシャロークローンを使用すると、リポジトリ履歴全体ではなく、最新のコミットのみをプルダウンできます。したがって、プロジェクトに何年もの履歴がある場合、または何千ものコミットからの履歴がある場合は、プルする特定の深さを選択できます。

浅瀬は深いですか?

少し前までは、浅瀬は最大300〜400フィート(91〜121メートル)の深さであると説明されていましたが、現在では、1000フィート(305メートル)未満のものはすべて浅瀬であると説明できます。

オブジェクトはディープコピーを割り当てますか?

オブジェクト割り当ては、プロトタイプのプロパティとメソッドをコピーしません。このメソッドは、ソースオブジェクトのディープコピーを作成せず、データのシャローコピーを作成します。参照または複雑なデータを含むプロパティの場合、別のオブジェクトを作成する代わりに、参照が宛先オブジェクトにコピーさます

コピーコピー()とコピーディープコピー()の違いは何ですか?

deepcopy()は新しいオブジェクトを作成、元のオブジェクトを新しいオブジェクトに実際にコピーします。 deepcopy()は、元のオブジェクトを再帰的にコピーしますが、。 copy()は、元のオブジェクトの第1レベルのデータへの参照オブジェクトを作成します。したがって、のコピー/参照の違い

Spread Operatorはディープコピーですか?

SpreadOperatorはプロパティをディープコピーしません。スプレッド演算子がオブジェクトプロパティのターゲットオブジェクトへのディープコピーを実行しないことをTILします。

Javaクローンはディープコピーですか?

ディープコピーのJava:オブジェクトのディープコピーがちょうど浅いコピーのように、元のオブジェクトのすべてのフィールドの完全なコピーを持っています。ただし、さらに、元のオブジェクトにフィールドとして他のオブジェクトへの参照がある場合、それらのオブジェクトのコピーも、それらに対してclone ()メソッドを呼び出すことによって作成されます。

Copy()はPythonで何をしますか?

Python List copy() copy()メソッドは、リストの浅いコピーを返します。この方法でリストをコピーする場合の問題は、new_listを変更すると、old_listも変更されることです。ただし、新しいリストが変更されたときに元のリストを変更しない必要がある場合は、 copy()メソッドを使用できます。

クローンメソッドが保護されているのはなぜですか?

このメソッドは、オブジェクトで呼び出すべきではないため保護されています。パブリックとしてオーバーライドできます(そしてオーバーライドする必要があります)。 Objectクラスでは、 clone ()メソッドprotectedとして宣言されています。 Cloneableを実装するだけの場合、同じパッケージのサブクラスとメンバーのみがオブジェクトでclone ()を呼び出すことができます。

JavaScriptのディープコピーとシャローコピーとは何ですか?

ディープコピーとは、新しい変数のすべての値がコピーされ、元の変数から切断されることを意味します。浅いコピーは、特定の(サブ)値がまだ元の変数に接続されていることを意味します。コピーを実際に理解するにはJavaScriptが値を格納する方法を理解する必要があります。

Pythonでコピーをどのように使用しますか?

Pythoncopy ()メソッドは、Setのコピーを返します。 =演算子を使用してセットを別のセットにコピーできますが、=演算子を使用してセットコピーすると、新しいセットを変更すると、コピーれたセットも変更されます。この動作が必要ない場合copy ()メソッドを使用してください。 =演算子の代わりに。