調用基類移動複製/分配構造函數我明白,無論何時在派生類中定義了自定義的複製構造函數或賦值運算符,那麼這些方法的責任就是調用相應的方法的基類。現在我的重點是移動構造函數。假設以下是我的移動構造函數。我有兩種方法調用基類構造函數。取自here我們應該從派生類
Derived(Derived&& d):Base(d) -->Form A
{}
Derived(Derived&& d):Base(std::move(d)) -->Form B
{}
現在哪種方法是正確的。從我的理解和從使用表單B的帖子上的最後一個答案是危險的和不正確的,因爲當派生類構造函數被調用時該對象將被取消。但是在formA中,基類複製構造函數被調用。打電話給FormA會更好嗎?同樣在移動複製賦值操作符中,調用基類賦值操作符和基類並不會更好。
如果你打算使用'static_cast',那麼使用'std :: move'有點多餘。只是'基地(std :: static_cast (d))'很好。 –
@SiyuanRen用'static_cast'然後'move'的意圖看起來更清晰。 – Lingxi