說我有一個A類型的對象。移動類沒有移動構造函數
如果我想將它移動到函數foo(A)
。
一個選項是做foo(std::move(a))
,它將調用移動構造函數。
但是,假設我正在使用一個我無法控制的類。如果我仍然想要移動這個類型,這不就足夠了嗎?
std::unique_ptr<A> a_ptr(new A());
foo(std::move(a_ptr));
與foo
更改爲接受unique_ptr。
兩者是否相似(在第二種情況下使用智能指針的開銷很小)?
說我有一個A類型的對象。移動類沒有移動構造函數
如果我想將它移動到函數foo(A)
。
一個選項是做foo(std::move(a))
,它將調用移動構造函數。
但是,假設我正在使用一個我無法控制的類。如果我仍然想要移動這個類型,這不就足夠了嗎?
std::unique_ptr<A> a_ptr(new A());
foo(std::move(a_ptr));
與foo
更改爲接受unique_ptr。
兩者是否相似(在第二種情況下使用智能指針的開銷很小)?
開銷是動態分配。 –
可能的重複:[什麼是移動語義?](http://stackoverflow.com/q/3106110/734069) –
第一種情況移動對象,第二種情況移動智能指針。 –