1. 程式人生 > >42.移動建構函式的合成規則

42.移動建構函式的合成規則

不會使用移動造作:

當類的類成員定義了自己的拷貝建構函式且未定義移動建構函式

當類的類成員沒有定義自己的拷貝建構函式且編譯器不能為其合成移動建構函式

當有類的成員的移動建構函式或者移動賦值運算子是刪除的或者不可訪問的

當類的成員存在成員引用或者const的時候,移動賦值運算子被定義為刪除的


如果一個類定義了自己的移動建構函式和/或移動賦值運算子,則該類的拷貝建構函式和拷貝賦值運算子被定義為刪除的

只有當一個類沒有定義自己的拷貝控制成員,且類的每個非static成員都可以移動,編譯器才會為它合成移動建構函式或移動賦值運算子。