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

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


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

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

したがって、コピーアンドスワップのイディオムには、コピーコンストラクタ、デストラクタ、およびスワップ関数の3つが必要です。スワップ関数は、クラスの2つのオブジェクトであるメンバーをスワップする非スロー関数です。注-std::swap関数は、内部でコピーコンストラクターと代入演算子を使用して同じことを実現するため、使用しないでください。



  1. C ++を学ぶための良いリソースは何ですか?

    Webには、C++の学習に役立つ多くのリソースがあります。私はあなたにC++を学ぶためにそこにある最高のリソースのいくつかのコンパイルされたリストを提供しようとしました- C ++ −これは、C ++のほとんどすべての基本トピックと中間トピックを詳細にカバーし、C ++を学ぶための全体的に優れたリソースであるため、C++を学ぶのに最適な場所です。 C ++(Bjarne Stroustrup)のツアー- 「ツアー」は、C ++をすでに知っているか、少なくとも経験豊富なプログラマー向けの、中程度の高レベルでのすべての標準C ++(言語と標準ライブラリ、およびC ++ 11の使用)の簡

  2. C ++プログラミング言語の利点は何ですか?

    以下はC++の利点です- C ++は移植性の高い言語であり、多くの場合、マルチデバイス、マルチプラットフォームのアプリ開発で選択される言語です。 C ++はオブジェクト指向プログラミング言語であり、クラス、継承、ポリモーフィズム、データ抽象化、カプセル化などの概念が含まれているため、コードの再利用が可能になり、プログラムが非常に保守しやすくなります。 C++はマルチパラダイムプログラミングを使用します。パラダイムとは、プログラムの論理、構造、および手順に関係するプログラミングのスタイルを意味します。 C ++はマルチパラダイムであり、汎用、命令型、オブジェクト指向の3つのパラダイムに従う