移動操作的自動產生
在C 11 中,移動語義的引入提出了關於移動構造函數和移動賦值的情況的問題運算子是自動產生的。
在 C 11 下,移動操作不會像複製建構子和複製賦值運算子那樣自動產生。如果滿足某些條件,編譯器僅產生移動語意:
理解這些規則有助於指導利用行動語義的類別的實現。 Howard Hinnant 簡報中的表格提供了自動產生特殊成員的簡要概述,包括行動操作:
聲明 | 複製建構子 | 複製賦值運算子 | 移動建構子與移動賦值運算子 |
---|---|---|---|
無 | 已產生 | 已產生 | 未產生 |
複製建構子 | 否已產生 | 已產生 | 未產生 |
複製賦值運算子 | ]未產生 | 未產生 | 未產生 |
移動建構子 | 未產生 | 未產生 | 未產生 |
移動賦值運算子 | 未產生 | 未產生 | 未產生已產生 |
析構函數 | 未產生 | 未產生 | 未產生 |
複製建構子與複製賦值運算子 | 未產生 | 未產生已產生 | 未產生 |
複製建構子與移動建構子 | ]未產生 | 未產生 | 未生成 |
複製建構子與移動賦值運算子 | 未產生 | 未產生 | 未產生 |
複製賦值運算子與移動建構子 | 未產生已產生 | 未產生 | 未產生已產生 |
複製賦值運算子與行動賦值運算子 | 未產生 | 未產生 | 未產生 |
移動建構子與析構函式 | 不已產生 | 未產生 | 未產生 |
行動賦值運算子和析構函數 | 未產生 | 未產生 | 未產生 |
複製建構子與複製賦值運算子與行動建構子 | 未產生 | 未產生 | 未產生 |
複製建構子與複製賦值運算子&移動賦值運算子 | 未產生 | 未產生已產生 | 未產生 |
複製建構子&行動建構子&移動賦值運算子 | 未產生 | 未產生 | 產生 |
複製賦值運算子與移動建構子&行動賦值運算子 | 未產生 | 未產生 | 已產生 |
透過認識這些規則,開發人員可以確保他們的類別正確利用移動語義並實現最佳效率。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3