<C>理解深浅拷贝

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

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

浅拷贝

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

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


深拷贝

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值