深浅拷贝是什么,通俗一点

来源:百度知道 编辑:UC知道 时间:2024/06/06 01:28:45

浅拷贝是指将对象内的数据完全一致的复制
深拷贝不是这样,它可以将内部的数据按照需要用特殊的方法拷贝,比如说对象内部有一个动态数组,浅拷贝只拷贝指针,而深拷贝可以重新申请空间并将数据复制过来

class A
{
public:
A(A &a);
private:
char * str;
}

浅拷贝:
拷贝构造函数
A::A(A &a)
{
str = a.str; //拷贝地址
}
深拷贝:
拷贝构造函数
A::A(A &a)
{
if(str)
delete [] str;
str = new char[strlen(a.str)+1]; //拷贝内存
strcpy(a.str,str);
}

上面就是深浅拷贝的区别,明白否?

重写构造函数,不用默认的构造函数