我another question讀到實現移動構造函數時,它是很好的做法,標準::移動每個成員在初始化列表中,因爲如果該成員恰好是另一個對象則是對象移動的構造將被調用。是這樣的...的std ::移動賦值運算符中移動
//Move constructor
Car::Car(Car && obj)
:
prBufferLength(std::move(obj.prBufferLength)),
prBuffer(std::move(obj.prBuffer))
{
obj.prBuffer = nullptr;
obj.prBufferLength = 0;
}
然而,在所有的樣品移動賦值運算符我見過,一直使用std ::此舉出於同樣的原因隻字不提。如果該成員是一個對象,那麼應該使用std :: move嗎?是這樣的...
//Move assignment
Car Car::operator=(Car && obj)
{
delete[] prBuffer;
prBufferLength = std::move(obj.prBufferLength);
prBuffer = std::move(obj.prBuffer);
obj.prBuffer = nullptr;
obj.prBufferLength = 0;
return *this;
}
UPDATE:
我明白沒有必要在我所選擇的例子使用std ::移動(不好)但我感興趣的是,如果會員是對象。
我當然也對這一點做了一些澄清。 – goji
'我在另一個問題中讀到',你能否鏈接那個問題?在你的例子中沒有理由使用'std :: move'。 –
@JesseGood見編輯,謝謝 – TomP89