c++【复习篇】: 深拷贝与浅拷贝

上述只是将数据成员的值进行了简单的拷贝:【浅拷贝】

对象arr1中的指针和对象arr2中的指针m_pArr一定会指向同一块内存。

此时如果先给arr1中m_pArr赋值,再给arr2中的m_pArr赋值,就会导致重写覆盖掉之前arr1中m_pArr赋的值。

当我们去销毁arr1的时候,为了避免内存泄漏,肯定会释放m_pArr指向的内存,如果已经释放掉再去销毁arr2对象的时候肯定会以同样的方式去释放arr2中m_pArr指向的内存。相当于同一块内存被释放了2次。【没错,这种四川话就是脑壳有包】

所以希望的工作方式是:

2个对象的指针应该指向不同的内存,拷贝的时候应该不是简单的拷贝指针地址,而是将指针指向的内存中的每一个元素依次的拷贝过来。

发布了288 篇原创文章 · 获赞 40 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_39969226/article/details/104084893