1. 内存空间不同:浅拷贝只会复制原始数据结构中的基本类型数据和地址,而不会创建新的内存空间;而深拷贝则会逐级复制原始数据结构中的所有子元素,并且每个子元素都分配了新的内存空间。
2. 子元素赋值不同:浅拷贝对于原始数据结构中的子元素,只能够复制其引用地址,也就是说多个实例共享相同的子元素,因此对于其中一个实例所做出的修改,也会影响到其他实例;而深拷贝则可以复制所有子元素的值或者引用地址(视情况而定),并保证每一个实例都具有完全相同但独立的内容。
3. 实现方式不同:浅拷贝通常只需要将原始数据结构中各元素的地址赋给新建实例中相应位置即可;而深拷贝需要遍历整个原始数据结构,并为其中每个子元素都分配一个新的内存空间,并将其复制到新建实例中相应位置。