对象之间传递数据
区别浅拷贝是只拷贝指针地址,意思是浅拷贝指针都指向同一个内存空间,当原指针地址所指空间被释放,那么浅拷贝的指针全部失效
深拷贝是先申请一块跟被拷贝数据一样大的内存空间,把数据复制过去。这样拷贝多少次,就有多少个不同的内存空间,干扰不到对方。
使用场景成员不包括指针和引用时,两种拷贝没区别
==>推荐使用浅拷贝
对指针和引用递归调用拷贝时
==》只能使用深拷贝,使用拷贝构造函数
就比如说,你想复制一间房子。深拷贝指的是你重新买了间房,里面的布置也全和原来那间做的一模一样。这时候你有两间一模一样的房子。
浅拷贝指的是你想复制一间房,就去重新配了把钥匙。你最终还是只有一间房。只是多了个钥匙而已
int main()
{
int a = 1;
int b = a; //浅拷贝
ObjectClass class1(1, 2);
ObjectClass class2 = class1; //浅拷贝
return 0;
}
深拷贝示例
//拷贝构造函数
ObjectClass ::ObjectClass (const ObjectClass &obj)
{
this->mDay = obj.mDay ; //深拷贝
this->mNum = obj.mNum ; //深拷贝
this->mLength= obj.mLength; //深拷贝
this->mData = (int *)calloc(obj.mLength, sizeof(int));
memcpy(this->mData, obj.mData, obj.mLength*sizeof(int)); //深拷贝
}



