Assignment overloaded operator
1. The assignment overload code is as follows:
class Person
{
public:
Person(int age)
{
m_Age = new int(age);
}
//重载运算符
Person& operator=(Person &p)
{
if (m_Age != NULL)
{
delete m_Age;
m_Age = NULL;
}
//提供深拷贝,解决浅拷贝的问题
m_Age = new int(*p.m_Age);
return *this;
}
~Person()
{
if (m_Age != NULL)
{
delete m_Age;
m_Age = NULL;
}
}
int* m_Age;
};
2. Test code
Person p1(18);
cout << "p1的年龄为: " << *p1.m_Age << endl;
Person p2(10);
cout << "p2的年龄为: " << *p2.m_Age << endl;
Person p3(30);
p3 = p2 = p1;
cout << "p3的年龄为: " << *p3.m_Age << endl;
cout << "赋值后的p1的年龄为: " << *p1.m_Age << endl;
cout << "赋值后的p2的年龄为: " << *p2.m_Age << endl;
3. Running results
p1的年龄为: 18
p2的年龄为: 10
p3的年龄为: 18
赋值后的p1的年龄为: 18
赋值后的p2的年龄为: 18
请按任意键继续. . .