2020年3月2日 下午9:35
C++面试题之浅拷贝和深拷贝的区别
浅拷贝和深拷贝的区别? - Acelit - 博客园
注:结合代码看,容易懂很多!
总结:
- 浅拷贝只是对指针的拷贝,拷贝后两个指针指向同一个内存空间,
- 深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经深拷贝后的指针是指向两个不同地址的指针。
再说几句:
当对象中存在指针成员时,除了在复制对象时需要考虑自定义拷贝构造函数,还应该考虑以下两种情形:
- 当函数的参数为对象时,实参传递给形参的实际上是实参的一个拷贝对象,系统自动通过拷贝构造函数实现;
- 当函数的返回值为一个对象时,该对象实际上是函数内对象的一个拷贝,用于返回函数调用处。
最后:这里就引出了智能指针!!!
浅拷贝带来问题的本质在于析构函数释放多次堆内存,使用std::shared_ptr,可以完美解决这个问题