Skip to content

Latest commit

 

History

History
7 lines (4 loc) · 830 Bytes

File metadata and controls

7 lines (4 loc) · 830 Bytes

32、深拷贝和浅拷贝的区别(举例说明深拷贝的安全性)

当出现类的等号赋值时,会调⽤拷⻉函数,在未定义显示拷⻉构造函数的情况下,系统会调⽤默认的拷贝函数-即浅拷贝,它能够完成成员的⼀⼀复制。当数据成员中没有指针时,浅拷贝是可⾏的。

但当数据成员中有指针时,如果采⽤简单的浅拷⻉,则两类中的两个指针指向同⼀个地址,当对象快要结束时,会调用两次析构函数,导致指野指针的问题。

所以,这时必需采⽤深拷⻉。深拷⻉与浅拷⻉之间的区别就在于深拷⻉会在堆内存中另外申请空间来存储数据,从而也就解决野指针的问题。简⽽⾔之,当数据成员中有指针时,必需要 ⽤深拷⻉更加安全。