
1、浅拷贝
什么是浅拷贝? (相当于给同一片空间取别名)
我们经过B拷贝A的过程后

由图我们可以清晰的得到,A和B指向的是同一片空间。
当我们执行B.str = 12;

很明显,A和B的值都改变了
代码验证
运行结果

当我们使用解析后

2、深拷贝
什么是深拷贝? (相当于复制一份A所指向的空间到另一份空间)
我们通过B拷贝A的过程后

由图我们不难看出,A和B是两片不同的空间,它们之间互不干扰
当我们执行B.str = 12; 后

明显只有B发生了改变;
代码验证

运行结果
总结:
1.浅拷贝可以让我们的空间得到反复使用,但有时候会出现重复释放空间的情况,所以在使用时需要谨慎。
2.深拷贝,虽然我们在解析空间时,基本不会出现问题,但它不利于我们对空间的反复使用。
本文探讨了C++中的浅拷贝和深拷贝概念。浅拷贝是指创建一个对象的副本,但副本和原始对象共享同一内存空间,修改副本会影响到原始对象。深拷贝则是创建一个完全独立的对象副本,两者互不影响。文章通过代码验证说明了两者的区别,并指出浅拷贝可能引发的重复释放空间问题,而深拷贝虽然避免了该问题,但不利于内存的复用。

1606

被折叠的 条评论
为什么被折叠?



