深拷贝和浅拷贝的区别是什么?
作者:互联网
深拷贝和浅拷贝的区别是什么?
1、浅拷贝
(1)、定义
- 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。即对象的浅拷贝会对“主"对象进行拷贝,但不会复制主对象里面的对象。"里面的对象”会在原来的 对象和它的副本之间共享。
- 简而言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象
(2)、实例
结果分析:
- 两个引用student1和student2指向不同的两个对象,但是两个引用student1和student2中的两个teacher引用指向的是同一个对象,所以说明是浅拷贝。
- 图解:
2、深拷贝
(1)、定义
- 深拷贝是一个整个独立的对象拷贝,深拷贝会拷贝所有的属性,并拷贝属性指向的动态分配的内存。 当对象和它所引用的对象一起拷贝时即发生深拷贝。深拷贝相比于浅拷贝速度较慢并且花销较大。
- 简而言之,深拷贝把要复制的对象所引用的对象都复制了一遍。
(2)、实例
结果分析:
两个引用student1和student2指向不同的两个对象,两个引用student1和student2中的两个teacher引用指向的是两个对象,但对teacher对象的修改只能影响student1对象,所以说是深拷贝。
标签:指向,区别,对象,student2,什么,引用,拷贝,student1 来源: https://blog.csdn.net/qq_25447799/article/details/120624424