C++でのコピーアンドスワップイディオム
割り当ては、オブジェクトの古い状態を破棄し、そのオブジェクトの新しい状態を構築する2つのステップで構成されます。デストラクタは最初のステップに使用され、コピーコンストラクタは2番目のステップを実行します。
これらの両方を実装するのは簡単です。ただし、割り当て演算子をオーバーロードすると、実装が非常に困難になる可能性があります。コピーとスワピディオムは同じソリューションです。
このイディオムは、コピーコンストラクターを使用してデータのローカルコピーを作成します。次に、スワップ機能を使用して古いデータを新しいデータとスワップします。次に、デストラクタを使用して一時コピーが破棄されます。最終的に、新しいデータのコピーのみが作成されました。
したがって、コピーアンドスワップのイディオムには3つのことが必要です
- コピーコンストラクタ
- コピーコンストラクタ
- デストラクタ
- スワップ機能。
スワップ関数は、クラスの2つのオブジェクトであるメンバーをスワップする非スロー関数です。
注 :std ::swap関数は、内部でコピーコンストラクタと代入演算子を使用して同じことを実現するため、使用しないでください。
-
2つの数値を交換するC++プログラム
2つの数値を交換するプログラムを作成する方法は2つあります。 1つは一時変数を使用することを含み、2番目の方法は3番目の変数を使用しません。これらは次のように詳細に説明されています- 一時変数を使用して2つの数値を交換するプログラム 一時変数を使用して2つの数値を交換するプログラムは次のとおりです。 例 #include <iostream > using namespace std; int main() { int a = 10, b = 5, temp; temp = a; a = b; &nbs
-
C ++のコピーアンドスワップイディオムとは何ですか?
割り当ては、オブジェクトの古い状態を破棄し、新しい状態を構築するという2つのステップで構成されます。デストラクタは最初のステップに使用され、コピーコンストラクタは2番目のステップを実行します。これらの両方を実装するのは簡単です。ただし、代入演算子をオーバーロードすると、実装が非常に難しくなる可能性があります。コピーとスワップのイディオムは同じソリューションです。 このイディオムは、コピーコンストラクターを使用してデータのローカルコピーを作成します。次に、スワップ機能を使用して古いデータを新しいデータとスワップします。次に、デストラクタを使用して一時コピーが破棄されます。最終的に、新しいデータ