2017-04-12 67 views
0

假設你有一個指針指向一個對象1的對象。執行真正的「深度複製」時,你有多深?

我明白,如果對象1不是一個指針,你可以創建一個對象1的克隆,比如說對象2,並創建一個新的指針b to to object 2.然後,指針b被放置在原始對象的副本中。

這是複製的工作原理。

如果對象1是一個指向另一個對象的指針呢?您是否爲這兩個對象製作副本以進行深層複製?或者只是「第一級」的對象?

從本質上講,當執行真正的深度複製時,你有多深?我假設你儘可能深入並複製一切,但我想仔細檢查一下。

謝謝。

回答

0

原則上,真正的「深層複製」將複製所有內容 - 遞歸地製作任何和所有嵌套對象的深層副本。

但是,這可能並不總是實用或可取的。這要看您的具體情況:

  • 如果你的數據結構包含循環或指的是同一個對象多次,則需要跟蹤並以某種方式處理這個或複製會繼續到無窮遠

  • 某些對象可能是「安全的」以通過指針引用而不創建副本(例如,如果它們是不可變的),因此複製它們可能是浪費的。您可能想特別免除這些複製過程

+0

謝謝您確認我的想法。你提出一些有趣的案例來考慮我以前從沒有過的事情。謝謝你指出。 – User