浅拷贝:两个对象指针指向同一个区域,(析构)类中有指针成员时,容易造成重复释放空间。因为存在指针成员时,浅拷贝直接将指针的值赋值给另一对象的同名成员变量。
为了解决这个问题,需要定义类的拷贝构造函数,进行深拷贝。
例如:
Point::Point(const Point& p)
{
//独立申请空间(malloc、calloc、realloc、new)
this->ptr=new char;
*this->ptr=*p.ptr;
}
深拷贝:不是赋值指针的值,而是将指针指向空间的内容赋值给另一个对象指针指向空间(这儿一般在栈上申请空间,并赋值给另一个对象的指针)。这样就能解决浅拷贝带来的对象析构时释放多次空间的问题。