首頁 > 後端開發 > C++ > C 11 中何時自動產生移動建構函式和移動賦值運算子?

C 11 中何時自動產生移動建構函式和移動賦值運算子?

Patricia Arquette
發布: 2024-11-27 05:26:18
原創
421 人瀏覽過

When Are Move Constructors and Move Assignment Operators Automatically Generated in C  11?

自動產生移動操作

在C 11 中,移動語義的引入引發了關於移動構造函數和移動賦值的情況的問題運算符是自動產生的。

在 C 11 下,移動操作不會像複製建構子和複製賦值那樣自動產生操作員。編譯器僅在滿足某些條件時產生移動語意:

  • 不存在使用者定義的複製建構子或複製賦值運算子。 如果明確定義了這些成員中的任何一個,則不會發生移動產生操作。
  • 未定義使用者定義的析構函數。 定義析構函數會停用 move 的產生
  • 該類別沒有不可複製的成員。 如果類別包含無法移動的成員,例如指向動態分配記憶體的指針,則不會產生移動操作。

理解這些規則有助於指導利用移動語意的類別的實作。 Howard Hinnant 簡報中的表格提供了自動產生特殊成員的簡潔概述,包括行動操作:

Declaration Copy Constructor Copy Assignment Operator Move Constructor & Move Assignment Operator
None Generated Generated Not Generated
Copy Constructor Not Generated Generated Not Generated
Copy Assignment Operator Not Generated Not Generated Not Generated
Move Constructor Not Generated Not Generated Not Generated
Move Assignment Operator Not Generated Not Generated Not Generated
Destructor Not Generated Not Generated Not Generated
Copy Constructor & Copy Assignment Operator Not Generated Not Generated Not Generated
Copy Constructor & Move Constructor Not Generated Not Generated Not Generated
Copy Constructor & Move Assignment Operator Not Generated Not Generated Not Generated
Copy Assignment Operator & Move Constructor Not Generated Not Generated Not Generated
Copy Assignment Operator & Move Assignment Operator Not Generated Not Generated Not Generated
Move Constructor & Destructor Not Generated Not Generated Not Generated
Move Assignment Operator & Destructor Not Generated Not Generated Not Generated
Copy Constructor & Copy Assignment Operator & Move Constructor Not Generated Not Generated Not Generated
Copy Constructor & Copy Assignment Operator & Move Assignment Operator Not Generated Not Generated Not Generated
Copy Constructor & Move Constructor & Move Assignment Operator Not Generated Not Generated Generated
Copy Assignment Operator & Move Constructor & Move Assignment Operator Not Generated Not Generated Generated

透過識別這些規則,開發人員可以確保他們的類別正確利用移動語義並實現最佳效率。

以上是C 11 中何時自動產生移動建構函式和移動賦值運算子?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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