浅复制&深复制

    First,先说说这篇博客的来历,当时学习大话设计模式的时候本来没有想要总结深复制和浅复制的念头,因为原型模式那块学的不好,理解的不太清晰,所以就放弃了,But,最近在学习VB.Net视频,视频里有讲到Shallow copy and Deep copy,当时还迷糊,他说的这是个啥,由于认识copy这个词,所以就猜测出来了,也因为这个知识让我对VB.Net视频更有兴趣了。


    Second,来说说Shallow copy and Deep copy的定义和我自己的一些理解。仅供参考:


浅复制(Shallow copy:如果字段是值类型的。则对该字段执行逐位复制,如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其副本引用同一对象。即被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然只想原来的对象。只是复制了地址,但是对象本身不属于复制的新对象。

浅复制&深复制_第1张图片


深复制(Deep copy):被复制对象将所有非引用类型的字段复制给新对象,同时将引用类型所指的地址中存的对象复制给新对象。即把引用对象的变量只想复制过得新对象,而不是原有被引用的对象。地址和对象本身都属于复制的新对象。

浅复制&深复制_第2张图片


    我的专业是电子信息科学与技术的,虽然专业课学习的不透彻,但是还是有点懂得大概面的,记得我们专业课上讲过进栈和出栈。此处的栈指的就是地址,所谓地址和咱们的房间也差不多,具体的额一个位置,但是它是抽象化的。进栈和出栈的数据就是所谓的对象,和家里房间的家具什么的相似,浅复制就是别人盖房和你家的图纸是一样的,外表看是一样的,但是内部设置不一样,这就是浅复制。深复制就是完全一样。


    这是我这个阶段对浅复制和深复制的理解,希望有不同理解的小伙伴们提出建议,让我更好的成长。


你可能感兴趣的:(【设计模式学习】)