浅谈C++深浅拷贝

本文探讨了C++中的浅拷贝和深拷贝概念。浅拷贝是指创建一个对象的副本,但副本和原始对象共享同一内存空间,修改副本会影响到原始对象。深拷贝则是创建一个完全独立的对象副本,两者互不影响。文章通过代码验证说明了两者的区别,并指出浅拷贝可能引发的重复释放空间问题,而深拷贝虽然避免了该问题,但不利于内存的复用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一开始我们的A空间        Str  A(1);

 

1、浅拷贝

             什么是浅拷贝?     (相当于给同一片空间取别名)

        我们经过B拷贝A的过程后                        

B拷贝A后        Str B ;        B =A;

由图我们可以清晰的得到,A和B指向的是同一片空间。

 当我们执行B.str = 12;

执行B.str = 12;   后

 很明显,A和B的值都改变了

代码验证 

 运行结果

当我们使用解析后

 

2、深拷贝

         什么是深拷贝?        (相当于复制一份A所指向的空间到另一份空间)

我们通过B拷贝A的过程后

Str B(A);

 由图我们不难看出,A和B是两片不同的空间,它们之间互不干扰

当我们执行B.str = 12; 后 

执行B.str = 12;   后

 明显只有B发生了改变;

代码验证

 运行结果

 

 

总结:

               1.浅拷贝可以让我们的空间得到反复使用,但有时候会出现重复释放空间的情况,所以在使用时需要谨慎。

                2.深拷贝,虽然我们在解析空间时,基本不会出现问题,但它不利于我们对空间的反复使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值