コピー&スワップメソッドを使用するときに代入演算子に関する質問があります。代入演算子を使用するときにコピーとスワップを使用するのはなぜですか?
String & operator = (String s) // the pass-by-value parameter serves as a temporary
{
s.swap (*this); // Non-throwing swap
return *this;
}// Old resources released when destructor of s is called.
すべてのポインタと動的に割り当てられた変数をディープコピーする優れたコピーコンストラクタがあるとしましょう。
次に、上記のコードと以下のコードの違いは何ですか?
String & operator = (String s) // the pass-by-value parameter serves as a temporary
{
return s;
}
私たちは良いコピーコンストラクタを持っているので、別のオブジェクトsがoperator = functionの内部に作成されていると思います。 スロー機能を使用しない点は何ですか?
ああ!答えはとてもシンプルでした。ありがとう:) – kong0329
@ kong0329私はあなたの本当の質問かどうか100%確信していません。とにかく、コピー&スワップイディオムに関するいくつかの追加情報を追加しました。 – songyuanyao
本当に助けてくれました。コピー&スワップイディオムの使用のポイントを得ました! – kong0329