什么时候需要浅拷贝(而不是深拷贝)?

Dim*_* C. 10 c# c++ java language-agnostic

有人能举例说明需要浅拷贝的情况吗?

请注意,在某些情况下,浅拷贝和深拷贝是相同的.当对象没有对其任何子变量的所有权时,就会发生这种情况; 也就是说,所有子变量都是聚合的.我想看一个例子,其中一个对象是它拥有的变量组成的,并且仍然希望将它们浅浅地复制.

备注:我不关心给出示例的语言.我从C++/Java/C#的角度来问这个问题,虽然我认为复制是一种与语言无关的概念.

Nie*_*est 8

当拥有的变量是不可变类型时,浅拷贝就足够了.可以进行深层复制,但只会导致额外的内存使用.


Vin*_*vic 3

一种可能的用例是,组合对象可以从浅拷贝中存在的状态信息派生,并且您想要序列化对象。

您可以存储浅表副本,然后从反序列化时的状态重建完整的对象。