C 中自動產生移動操作
在C 98 中,編譯器可以自動為類別產生複製建構子和複製賦值運算子。然而,隨著 C 11 中移動語意的引入,關於移動操作自動產生的問題出現了。
移動建構子和移動賦值運算子會自動產生嗎?
否,與複製建構子和複製賦值運算子不同,編譯器不會自動為具有使用者定義建構子或賦值的類別產生移動操作
不自動產生移動操作的情況
如果滿足以下條件,則不會自動產生移動操作:
確定自動產生Move操作
要確定是否為類自動產生移動操作,請考慮以下事項:
棄用自動移動操作的產生
在C 20 中,不建議自動產生行動操作,如果該類別聲明析構函數或任何複製成員(複製建構子、複製賦值運算子)。為了確保與 C 未來版本的兼容性,建議為需要它們的類別明確聲明移動操作。
以上是C 編譯器何時會自動產生移動建構函式和賦值運算子?的詳細內容。更多資訊請關注PHP中文網其他相關文章!