我有一个班级:
class Person{
public:
Person();
~Person();
string name;
int* age;
};
int main()
{
Person* personOne = new Person;
personOne->name = "Foo";
personOne->age = new int(10);
return 0;
}
如何创建复制所有personOne数据的另一个Person对象?年龄指针需要指向一个新的int,所以只要年龄在personOne或personTwo中发生变化,它就不会相互影响。
答案 0 :(得分:3)
有两个posibilites:
clone
方法代码:
class Person{
public:
Person();
~Person();
Person (const Person& other) : name(other.name), age(new int(*(other.age)))
{
}
Person& operator = (const Person& other)
{
name = other.name;
delete age; //in case it was already allocated
age = new int(*(other.age))
return *this;
}
//alternatively
Person clone()
{
Person p;
p.name = name;
p.age = new int(age);
return p;
}
string name;
int* age;
};
在此之前回答这些问题:
int
指针吗?