【C++】浅拷贝与深拷贝

浅拷贝:只是拷贝了基本类型的数据,而引用类型数据,复制后也是会发生引用,我们把这种拷贝叫做“浅拷贝”,换句话说,浅拷贝仅仅是指向被复制的内存地址,如果原地址中对象被改变了,那么浅拷贝出来的对象也会相应改变。

深拷贝:在计算机中开辟了一块新的内存地址用于存放复制的对象。

浅拷贝不用拷贝数据内容,效率相较于深拷贝要高。但是也存在一个问题,如果成员中包含指针,由于浅拷贝中的指针与原指针指向同一个内存,对象销毁时该内存可能会被重复释放两次,造成严重后果!

如果没有定义拷贝构造函数,系统会在拷贝对象时调用默认拷贝构造函数,进行浅拷贝。因此,在对含有指针成员的对象进行拷贝时,必须要自己定义拷贝构造函数,使拷贝后的对象指针成员有自己的内存空间,即进行深拷贝,这样就避免了内存泄漏发生。

发布了15 篇原创文章 · 获赞 1 · 访问量 1668

猜你喜欢

转载自blog.csdn.net/weixin_43465579/article/details/99704964
今日推荐