浅拷贝:简单的拷贝赋值操作
如果在堆区创建对象,则相应的指针对象指向同一块内存地址,在释放地址时,浅拷贝会导致堆区内存重复释放。
深拷贝:在堆区重新申请空间,进行拷贝赋值
class person
{
public:
//创建构造函数
person(int a, int b) {
age = a; p = new int(b);
cout << "构造函数调用" << endl;
}
//释放堆区内存
~person() { if (p != NULL) delete p; p = NULL; cout << "析构函数调用" << endl; };
//深拷贝构造函数
person(const person& a) {
age = a.age;
p = new int(*a.p);
cout << "深拷贝构造函数调用" << endl;
}
private:
int age;
int* p;