浅拷贝:是增加了一个指针,指向原来已经存在的内存,而不复制对象本身,新旧对象还是共享同一块内存。
#include <iostream>
using namespace std;
class person{
public:
person(int age)
{
p_age=age;
}
person(const person& qkb)
{
p_age=qkb.p_age;
}
int p_age;
};
int main(int argc, char *argv[])
{
person p1(18);
cout<<p1.p_age<<endl;
person p2(p1);
cout<<p2.p_age<<endl;
return 0;
}
深拷贝:是增加了一个指针,并新开辟了一块空间让指针指向这块新开辟的空间。
#include <iostream>
using namespace std;
class person{
public:
person(int weight)
{
p_weight=new int(weight);
}
person(const person& qkb)
{
p_weight=new int(*qkb.p_weight);
}
int p_age;
int *p_weight;
~person()
{
if(p_weight!=NULL)
{
delete p_weight;
p_weight=NULL;
}
}
};
int main(int argc, char *argv[])
{
person p1(54);
cout<<*p1.p_weight<<endl;
person p2(p1);
cout<<*p2.p_weight<<endl;
return 0;
}