什麼是 C++ 中的複製和交換習語?


分配包括兩個步驟,分別是消除物件舊狀態和為物件構建新狀態。解構函式用於第一步驟,複製建構函式執行第二步驟。這兩者都易於實現。但是,當過載賦值運算子時,實現起來可能會非常困難。複製和交換習語是同一個問題的解決方案。

這個習語使用複製建構函式構建資料的本地複製。然後它使用 swap 函式用新資料交換舊資料。接著使用解構函式析構臨時複製。最後我們只有新資料的一個複製。

所以,複製和交換習語需要三樣東西——複製建構函式、解構函式和 swap 函式。swap 函式是一個非丟擲函式,交換類的兩個物件,即成員。注意——你不應該使用 std::swap 函式,因為它在內部使用複製建構函式和賦值運算子來實現相同的功能。


更新於:23-6-2020

211 次瀏覽

開啟你的職業生涯

完成課程獲得認證

立即開始
廣告
© . All rights reserved.