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

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

Susan Sarandon
發布: 2024-11-28 19:28:12
原創
566 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板