1、什么是深\浅拷贝
假设现在有一片源内存空间,和一个待分配引用的目标对象内存空间,目的是给目标对象空间分配内存。而定义简而言之,深拷贝会复制源内存空间并重新生成一片内存空间,并将其引用给目标对象,而浅拷贝则正好相反,是直接将源内存空间引用给目标对象内存空间。
2、 何时要用到拷贝
C++中用到拷贝的场景有以下三种:
1、函数参数中以值传递的方式传入时,会将传入的实际参数拷贝一份
2、函数返回中返回了一个局部对象,会将其拷贝一份并返回
3、再给一个对象初始化的时候(不是赋值)会将值拷贝一份。
3、哪里要注意深浅拷贝
之所以这个问题值得深究,肯定是因为如果不注意会引起严重的后果,尤其是在类成员中有指针的时候,比如以下实例:
class String
{
public:
const char* c_str()
{
return _str;
}
String(const char* str = "")
:_str(new char[strlen