深度复制和浅复制的区别是什么?
当前回答
浅拷贝尽可能少地复制。集合的浅拷贝是集合结构的副本,而不是元素的副本。使用浅拷贝,两个集合现在共享单个元素。
深度复制复制一切。集合的深层副本是两个集合,原始集合中的所有元素都被复制。
其他回答
试着考虑下面的图像
例如Object。memberwisclone创建一个浅复制链接
并使用ICloneable接口,你可以得到深度拷贝,如这里所述
“ShallowCopy”指向与“Source”相同的内存位置。“DeepCopy”指向内存中的不同位置,但内容是相同的。
假设有两个数组arr1和arr2。
arr1 = arr2; //shallow copy
arr1 = arr2.clone(); //deep copy
除了上述所有定义之外,还有一个最常用的深度复制,位于类的复制构造函数(或重载赋值操作符)中。
浅复制——>是当你没有提供复制构造函数时。在这里,只复制对象,但不复制类的所有成员。
深度复制——>是当您决定在类中实现复制构造函数或重载赋值,并允许复制类的所有成员时。
MyClass& MyClass(const MyClass& obj) // copy constructor for MyClass
{
// write your code, to copy all the members and return the new object
}
MyClass& operator=(const MyClass& obj) // overloading assignment operator,
{
// write your code, to copy all the members and return the new object
}