【c++编程思想学习笔记】解决浅拷贝的两种方法:(深拷贝)(引用计数+写拷贝)

当类中含有指针类型的数据成员,使用默认的拷贝构造函数或者赋值操作,将导致浅拷贝的问题

解决办法:

1:使用深拷贝:实现拷贝构造函数以及赋值操作时,为指针开辟新的空间

2:引用计数+写拷贝
引用计数:当对象需要大量的内存或者过高的初始化,为了避免这种拷贝。
使一块存储单元具有智能,它知道有多少对象指向它。拷贝构造函数或赋值运算意味着把另外的指针指向现在的存储单元并增加计数。消除意味着减少引用计数,如果引用计数为0则意味销毁这个对象
写拷贝:因为不止一个对象使用这一块内存,当修改自己的时,也等于修改了他人的。在向这块存储单元写之前,应该确信没有其他人使用它。如果引用计数大于1,在写之前必须拷贝这块存储单元,这样就不会影响他人了














你可能感兴趣的:(深拷贝,浅拷贝)