深拷贝和浅拷贝
一 深拷贝和浅拷贝
- 浅拷贝
拷贝后对象的物理状态相同
- 深拷贝
拷贝后对象的逻辑状态相同
二. 默认拷贝构造函数的缺陷
- 默认拷贝构造函数的缺陷(浅拷贝)
- 实现深拷贝
#include<iostream>
using namespace std;
class Test
{
public:
int i;
int j;
int* p;
public:
int getI()
{
return i;
}
int getIJ()
{
return j;
}
int* getP()
{
return p;
}
Test(int v)
{
i = 1;
j = 2;
p = new int;
*p = v;
}
#if 0
Test(const Test& t)
{
i = t.i;
j = t.j;
p = new int;
*p = *t.p;
}
#endif
~Test()
{
delete p;
}
};
int main(int argc, const char *argv[])
{
Test t1(10);
t1.i = 100;
t1.j = 200;
cout << "*t1.p = " << *t1.getP() << endl;
Test t2 = t1;
return 0;
}