美文网首页
【专题】浅拷贝与深拷贝

【专题】浅拷贝与深拷贝

作者: 猿笔记 | 来源:发表于2018-10-19 07:32 被阅读10次

概念

  • 对象拷贝:将一个对象的所有属性(成员变量)拷贝到另一个有着相同类类型的对象中去
比如:对象A和对象B都属于类S,具有属性a和b。那么对对象A进行拷贝操作赋值给对象B就是:
B.a=A.a; 
B.b=A.b;

分类

  • 浅拷贝(Shallow Copy):
    ①对于数据类型是基本数据类型的成员变量,浅拷贝会直接进行值传递,也就是将该属性值复制一份给新的对象。因为是两份不同的数据,所以对其中一个对象的该成员变量值进行修改,不会影响另一个对象拷贝得到的数据
    ②对于数据类型是引用数据类型的成员变量,比如说成员变量是某个数组、某个类的对象等,那么浅拷贝会进行引用传递,也就是只是将该成员变量的引用值(内存地址)复制一份给新的对象。因为实际上两个对象的该成员变量都指向同一个实例。在这种情况下,在一个对象中修改该成员变量会影响到另一个对象的该成员变量值

  • 深拷贝(Deep Copy):对引用数据类型的成员变量的对象图中所有的对象都开辟了内存空间;而浅拷贝只是传递地址指向,新的对象并没有对引用数据类型创建内存空间

浅拷贝的实现方式

相关文章

网友评论

      本文标题:【专题】浅拷贝与深拷贝

      本文链接:https://www.haomeiwen.com/subject/kczdzftx.html