深复制:如果一个类的数据成员需要使用动态分配的堆资源,并且这个类的对象之间发生了数据成员拥有的堆资源复制过程,这个过程就可以叫深复制。
浅复制:对象存在数据成员拥有堆资源但复制过程并未实现数据成员拥有堆资源的复制情况视为浅复制。
#include <iostream>
#include <string.h>
using namespace std;
class CPerson
{
public:
CPerson(char *str)
{
cout << "construct" << str << endl;
name = new char[strlen(str)+1];
strcpy(name, str);
}
CPerson(CPerson &s)
{
cout << "Copy construct" << s.name << endl;
name = new char[strlen(s.name)+1];
strcpy(name, s.name);
}
~CPerson()
{
cout << "destruct" << name << endl;
delete []name;
}
private:
char *name;
};
int main()
{
CPerson p1("Randy"), p2(p1);
return 0;
}