浅拷贝:复制对象,但是两个对象指向同一块地址,如果某一个对象释放了该内存,另一个对象再进行释放会造成错误。
深拷贝:复制对象并且复制新的地址,所以两个对象各有一个地址,一个对象释放了他的内存,不会对另一个对象造成错误
#include<iostream>
#include<string.h>
using namespace std;
class Student
{
private:
int num;
char *name;
public:
Student()
{
name=new char(20);
cout<<"Studnet"<<endl;
}
~Student()
{
cout<<"~Student"<<endl;
delete name;
name=NULL;
}
Student(const Student& s)
{
//浅拷贝,当对象的name和传入对象的name指向相同的地址
//name = s.name;
//深拷贝
name=new char(20);
memcpy(name,s.name,strlen(s.name));
cout<<"copy student"<<endl;
}
};
int main()
{
//{
//花括号让s1和2变成局部对象,方便测试
Student s1;
Student s2(s1);
//}
}