C++ assignment overloaded operator

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
请按任意键继续. . .

Guess you like

Origin blog.csdn.net/Little_XWB/article/details/108187849