給樓上同學解釋下move的作用。一般自定義的類,我們需要定義如下三個建構函式和兩個賦值運算子過載:class A{public: A();//預設建構函式 A(const A&); //複製建構函式 A(A&&);//移動建構函式 A& operator=(const A&);//複製賦值運算子 A& operator=(A&&);//移動賦值運算子};使用時如下:int main(){ A a1;//呼叫預設建構函式 A a2 ( a1); //呼叫複製建構函式 A a3 ( std::move(a1));//呼叫移動建構函式 A a4,a5; //呼叫預設建構函式 a4 = a2; //使用複製賦值運算子 a5 = std::move(a2); //使用移動賦值運算子}所以move的作用是透過返回右值引用型別來影響函式的匹配。move本身對物件不做任何事情,只是告訴編譯器我這裡想“移動”物件,你給我呼叫移動版的函式。至於是不是真的“移動了”,怎麼移動,那取決於你的函式定義手機碼字格式可能有問題。。。
給樓上同學解釋下move的作用。一般自定義的類,我們需要定義如下三個建構函式和兩個賦值運算子過載:class A{public: A();//預設建構函式 A(const A&); //複製建構函式 A(A&&);//移動建構函式 A& operator=(const A&);//複製賦值運算子 A& operator=(A&&);//移動賦值運算子};使用時如下:int main(){ A a1;//呼叫預設建構函式 A a2 ( a1); //呼叫複製建構函式 A a3 ( std::move(a1));//呼叫移動建構函式 A a4,a5; //呼叫預設建構函式 a4 = a2; //使用複製賦值運算子 a5 = std::move(a2); //使用移動賦值運算子}所以move的作用是透過返回右值引用型別來影響函式的匹配。move本身對物件不做任何事情,只是告訴編譯器我這裡想“移動”物件,你給我呼叫移動版的函式。至於是不是真的“移動了”,怎麼移動,那取決於你的函式定義手機碼字格式可能有問題。。。