類我寫了一個移動構造函數用於下列方式類構造函數:c + +將含有載體
class A
{
std::vector<double> m;
A(A&& other)
: m{other.m}
{
}
}
這是移動other.m
到m
正確的方法是什麼?
我應該這樣做嗎?
A(A&& other)
: m{std::move(other.m)}
{
}
或者我應該完全做其他事情?
類我寫了一個移動構造函數用於下列方式類構造函數:c + +將含有載體
class A
{
std::vector<double> m;
A(A&& other)
: m{other.m}
{
}
}
這是移動other.m
到m
正確的方法是什麼?
我應該這樣做嗎?
A(A&& other)
: m{std::move(other.m)}
{
}
或者我應該完全做其他事情?
第二個片段是移動other.m
因爲它需要被轉化爲R值參考的std::vector
移動構造函數中踢左值的正確方法。
即使,在這個具體的例子,這將是足夠的,以簡單的寫
A(A&& rhs) = default;
編譯器將生成的各rhs
部件移動到的*this
的corresponing構件的構造函數。
p.s.你也可能意味着公開構造函數。
我更喜歡爲練習手動編寫它們,通常我會有非常重要的移動/複製構造函數/作業的類。我是否必須在移動賦值運算符中使用std :: move?目前,我只是使用std :: swap?也許我應該問這是一個單獨的問題? – user3728501
如果你想移動它們,你應該在名稱變量上使用'std :: move'。它是什麼功能並不重要。 –
您應該保持默認狀態。零規則。 – zch