首頁 >後端開發 >C++ >在移動賦值運算子中是否需要 `this != &rhs` 檢查?

在移動賦值運算子中是否需要 `this != &rhs` 檢查?

Susan Sarandon
Susan Sarandon原創
2024-11-28 19:28:12579瀏覽

Is a `this != &rhs` Check Necessary in a Move Assignment Operator?

移動賦值運算子與this != &rhs

在類別的標準賦值運算子中,常見的做法是包含this != &rhs 檢查以避免在指派給自身時修改呼叫物件。但是,在移動賦值運算子中是否需要進行此檢查?

答案:

對於移動賦值運算子中是否需要進行此 != &rhs 檢查,意見不一。有些人認為始終包含它是一種很好的做法,而有些人則認為這是不必要的,而且可能有害。

理由:

  • 理由包括檢查: 它確保被指派的物件不是呼叫物件本身,從而防止自賦值。
  • 省略檢查的原因: 在移動賦值運算子中,根據定義,呼叫物件不是右側 (RHS) 物件的參考。因此, this != &rhs 檢查本質上是正確的且是不必要的。而且,如果不小心交換了左右方向,檢查就會失敗,導致未定義的行為。

結論:

最終,是否包含移動賦值運算符中的 this != &rhs 檢查取決於個人喜好和上下文。 C 標準並不要求它,但一些開發人員可能會選擇包含它以增加安全性或避免無意的自分配。

以上是在移動賦值運算子中是否需要 `this != &rhs` 檢查?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn