深拷贝
深拷贝是指在拷贝对象时,会创建一个新的对象,并将原始对象的所有内容都复制到新对象中,包括指针所指向的内容。
**特点:**完全复制原始对象的所有数据,即使原始对象和拷贝对象分别进行了修改,彼此之间也不会相互影响。
浅拷贝
浅拷贝是指将一个对象的值复制到另一个对象,但如果对象中包含指针成员,则只会复制指针的地址,而不会复制指针所指向的内容。这意味着两个对象将共享同一块内存空间。
**特点:**如果原始对象和拷贝对象共享同一块内存,当其中一个对象修改了这块内存中的数据时,另一个对象中的数据也会被修改,因为它们指向同一块内存区域。这可能导致意外的数据修改或释放问题。
注意点
浅拷贝带来的问题是堆区的内存重复释放,当数据成员中有指针时,如果采用简单的浅拷贝,则两类中的两个指针将指向同一个地址,当对象快结束时,会调用两次析构函数,从而导致指针使用异常而程序崩溃。