Pointers 当你执行一个真正的;深度复制;?

Pointers 当你执行一个真正的;深度复制;?,pointers,object,deep-copy,cloning,Pointers,Object,Deep Copy,Cloning,假设您有一个对象,其指针a指向对象1 我知道,如果对象1不是指针,则可以复制对象1,即对象2,然后创建指向对象2的新指针b。指针b就是放置在原始对象副本中的对象 这就是深度复制的工作原理 如果对象1是指向另一个对象的指针呢?是否将这两个对象都复制为深度复制?还是仅仅是“第一级”对象 从本质上讲,执行真正的深度复制时要深入到多深?我想你应该尽可能深入地复制所有东西,但我想再检查一遍 谢谢。原则上,真正的“深度复制”将复制所有内容-递归地对任何和所有嵌套对象进行深度复制 然而,这可能并不总是实际或可

假设您有一个对象,其指针a指向对象1

我知道,如果对象1不是指针,则可以复制对象1,即对象2,然后创建指向对象2的新指针b。指针b就是放置在原始对象副本中的对象

这就是深度复制的工作原理

如果对象1是指向另一个对象的指针呢?是否将这两个对象都复制为深度复制?还是仅仅是“第一级”对象

从本质上讲,执行真正的深度复制时要深入到多深?我想你应该尽可能深入地复制所有东西,但我想再检查一遍

谢谢。

原则上,真正的“深度复制”将复制所有内容-递归地对任何和所有嵌套对象进行深度复制

然而,这可能并不总是实际或可取的。这取决于您的具体情况:

  • 如果您的数据结构包含循环或多次引用同一对象,您将需要以某种方式跟踪和处理它,否则复制将继续进行到无穷远

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


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