2017-04-12 44 views
0

假设你有一个指针指向一个对象1的对象。执行真正的“深度复制”时,你有多深?

我明白,如果对象1不是一个指针,你可以创建一个对象1的克隆,比如说对象2,并创建一个新的指针b to to object 2.然后,指针b被放置在原始对象的副本中。

这是复制的工作原理。

如果对象1是一个指向另一个对象的指针呢?您是否为这两个对象制作副本以进行深层复制?或者只是“第一级”的对象?

从本质上讲,当执行真正的深度复制时,你有多深?我假设你尽可能深入并复制一切,但我想仔细检查一下。

谢谢。

回答

0

原则上,真正的“深层复制”将复制所有内容 - 递归地制作任何和所有嵌套对象的深层副本。

但是,这可能并不总是实用或可取的。这要看您的具体情况:

  • 如果你的数据结构包含循环或指的是同一个对象多次,则需要跟踪并以某种方式处理这个或复制会继续到无穷远

  • 某些对象可能是“安全的”以通过指针引用而不创建副本(例如,如果它们是不可变的),因此复制它们可能是浪费的。您可能想特别免除这些复制过程

+0

谢谢您确认我的想法。你提出一些有趣的案例来考虑我以前从没有过的事情。谢谢你指出。 – User