C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でのコピーアンドスワップイディオム


割り当ては、オブジェクトの古い状態を破棄し、そのオブジェクトの新しい状態を構築する2つのステップで構成されます。デストラクタは最初のステップに使用され、コピーコンストラクタは2番目のステップを実行します。

これらの両方を実装するのは簡単です。ただし、割り当て演算子をオーバーロードすると、実装が非常に困難になる可能性があります。コピーとスワピディオムは同じソリューションです。

このイディオムは、コピーコンストラクターを使用してデータのローカルコピーを作成します。次に、スワップ機能を使用して古いデータを新しいデータとスワップします。次に、デストラクタを使用して一時コピーが破棄されます。最終的に、新しいデータのコピーのみが作成されました。

したがって、コピーアンドスワップのイディオムには3つのことが必要です

  • コピーコンストラクタ
  • コピーコンストラクタ
  • デストラクタ
  • スワップ機能。

スワップ関数は、クラスの2つのオブジェクトであるメンバーをスワップする非スロー関数です。

:std ::swap関数は、内部でコピーコンストラクタと代入演算子を使用して同じことを実現するため、使用しないでください。


  1. 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

  2. C ++のコピーアンドスワップイディオムとは何ですか?

    割り当ては、オブジェクトの古い状態を破棄し、新しい状態を構築するという2つのステップで構成されます。デストラクタは最初のステップに使用され、コピーコンストラクタは2番目のステップを実行します。これらの両方を実装するのは簡単です。ただし、代入演算子をオーバーロードすると、実装が非常に難しくなる可能性があります。コピーとスワップのイディオムは同じソリューションです。 このイディオムは、コピーコンストラクターを使用してデータのローカルコピーを作成します。次に、スワップ機能を使用して古いデータを新しいデータとスワップします。次に、デストラクタを使用して一時コピーが破棄されます。最終的に、新しいデータ