在项目中,不少地方有对象克隆,下面写个简单程序来熟悉一下对象克隆:
#include <iostream>
using namespace std;
class A
{
public:
int x;
int y;
A():x(0), y(0){}
A(int s, int t):x(s), y(t){}
A* clone()
{
A *p = new A;
p->x = this->x;
p->y = this->y;
return p;
}
};
int main()
{
A *q = new A(1, 2);
A *p = q->clone();
A a(3, 4);
A b(a);
delete q;
delete p;
return 0;
}
对象克隆:两个对象实体相等(别用相同这个词),但是所在的存储空间不同。在上例中,p和q的值是不同的,但p和q指向的对象实体相等。&a和&b不同,但是a,b两个对象实体相等。