コピー コンストラクターとコピー代入演算子の共通関数の作成
プログラミングでは、コピー コンストラクターとコピー代入演算子の両方が、多くの場合、その実装の重要な部分。この類似性により、これらの機能を 1 つの共通関数にマージできますか?
共通関数のアプローチ
はい、次のような処理を行う共通関数を作成することは可能です。コピー コンストラクターとコピー代入演算子の両方。その方法は次のとおりです。
オプション 1: 明示的な Operator= コピー コンストラクターからの呼び出し (非推奨)
MyClass(const MyClass& other) { operator=(other); }
ただし、このアプローチは次の理由から推奨されません。
オプション 2: コピー アンド スワップ イディオム
MyClass& operator=(const MyClass& other) { MyClass tmp(other); swap(tmp); return *this; }
コピーアンドスワップのイディオムにはいくつかの利点があります。利点:
スワップ関数の考慮事項
コピー コンストラクターやコピー代入に依存せずに内部を直接交換する「真の」スワップ関数を使用することが重要です。オペレーター。通常は、メンバーごとのスワップ、または基本型とポインターで std::swap を使用することが適切です。
以上が共通関数でコピー コンストラクターとコピー代入演算子の両方を置き換えることはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。