理解深浅拷贝

从地址角度理解浅拷贝与深拷贝的实现与区别

    当实例化一个对象的时候,调用构造函数,系统为给当前对象在栈上分配对应大小的地址空间,并通过指针指向当前地址空间首地址。
    如果我们新建对象,并用已有对象初始化当前对象,此时编译器就会自动创建拷贝构造,而拷贝构造有深浅拷贝之分。
    编译器默认的拷贝为浅拷贝。

浅拷贝

    浅拷贝的实质是拷贝对象的地址,将当前对象的地址拷贝为已知对象的内存地址,可以理解为将当前对象的指针指向已知对象的地址,拷贝的对象与被拷贝的对象共用一块内存空间。

在这里插入图片描述
    浅拷贝的特点是拷贝内存地址,对象1与对象2的地址指针相同,所以如果当对象1修改内部数据时,对象2中的数据也会发生相应的变化,两个对象操作的时同一块内存空间


深拷贝

     深拷贝简单理解为,将被拷贝对象中的所有内容都复制到新对象中,新对象有自己的内存空间,只是内存中的内容与被拷贝的对象完全相同。
在这里插入图片描述
深拷贝只是拷贝对象中的内同,对象1与对象2有自己的内存地址,指向不同的地址空间,所以对象1修改自身数据时,对象2不收影响,各自有各自的空间,各玩各的

发布了52 篇原创文章 · 获赞 13 · 访问量 5447

猜你喜欢

转载自blog.csdn.net/MPF1230/article/details/104023364