如何理解 C++ 中的深拷贝和浅拷贝

 我来答
百度网友3a00d8c64
2017-01-15 · TA获得超过599个赞
知道小有建树答主
回答量:430
采纳率:64%
帮助的人:325万
展开全部
1、浅拷贝:复制堆栈中的值。
2、深拷贝:复制堆(指针)中的值。
3、一旦出现指针必须进行深拷贝的原因在于:浅拷贝复制当前变量的值。若变量为指针,则是复制指针所指向的地址,此时会导致,复制方和被复制方的指针同时指向同一个位置,一旦被复制方超出作用域被析构,那么复制方的指针所值的位置的数据也一同被析构。结果指针悬垂。
4、简单举例:
有一个橙子,A(复制方)和B(被复制方)两个人,橙子必须要整个吃掉才会使人满足。那么:
若B把橙子吃掉了,A就没有橙子吃了。
若A把橙子吃掉了,B就没有橙子吃了。
所以,独享一个橙子才是关键,深拷贝就是多拿一个橙子,2个人可以独自享用自己的橙子。
即,复制方根据被复制方的大小信息,先创建一个指向别的位置的同等大小的内存块,然后再把被复制方的数值复制到这个新的内存块中,由此可以保证不共享同一位置的数据。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式