0%

C++面试题之浅拷贝和深拷贝的区别

2020年3月2日 下午9:35

C++面试题之浅拷贝和深拷贝的区别
浅拷贝和深拷贝的区别? - Acelit - 博客园
注:结合代码看,容易懂很多!

总结:

  1. 浅拷贝只是对指针的拷贝,拷贝后两个指针指向同一个内存空间,
  2. 深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经深拷贝后的指针是指向两个不同地址的指针。

再说几句:

当对象中存在指针成员时,除了在复制对象时需要考虑自定义拷贝构造函数,还应该考虑以下两种情形:

  1. 当函数的参数为对象时,实参传递给形参的实际上是实参的一个拷贝对象,系统自动通过拷贝构造函数实现;
  2. 当函数的返回值为一个对象时,该对象实际上是函数内对象的一个拷贝,用于返回函数调用处。

最后:这里就引出了智能指针!!!

浅拷贝带来问题的本质在于析构函数释放多次堆内存,使用std::shared_ptr,可以完美解决这个问题