C 中的移動操作產生
在C 98 中,為沒有自訂定義的類別自動產生複製構造函數和賦值運算符。然而,隨著 C 11 中移動語意的引入,移動操作的產生需要進一步考慮。
自動產生移動操作
移動建構子和移動賦值運算子僅在滿足某些條件時自動產生:
自動產生的例外
在某些情況下,不會自動產生行動操作,即使滿足上述條件。例如:
其他資訊
來自ACCU 的Howard Hinnant 示範2014年會議提供了一個綜合表格,總結了自動產生特殊成員的規則,包括行動操作。幻燈片突出顯示,已棄用的行為以紅色方塊表示。
為了確保正確處理移動語義,建議遵循 C 98/03 中的「3 規則」。這意味著如果聲明了析構函數,則明確聲明兩個複製成員,或聲明至少一個複製成員。
以上是C 中何時自動產生移動建構函數和移動賦值運算子?的詳細內容。更多資訊請關注PHP中文網其他相關文章!