C++浅拷贝和深拷贝

时间:2020-12-19 19:49:47

用一句简单的话来说就是浅拷贝,只是对指针的拷贝,拷贝后两个指针指向同一个内存空间,深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝(重新分配有内存),经深拷贝后的指针是指向两个不同地址的指针。因此浅拷贝释放内存的时候很容易出现因为释放两个指针而内存出错。

拷贝情况:
当对象中存在指针成员时,除了在复制对象时需要考虑自定义拷贝构造函数,还应该考虑以下两种情形:
1.当函数的参数为对象时,实参传递给形参的实际上是实参的一个拷贝对象,系统自动通过拷贝构造函数实现;
2.当函数的返回值为一个对象时,该对象实际上是函数内对象的一个拷贝,用于返回函数调用处。