C ++ 할당 오버로드 연산자

할당 오버로드 연산자

1. 할당 과부하 코드는 다음과 같습니다.

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. 테스트 코드

    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. 실행 결과

p1的年龄为: 18
p2的年龄为: 10
p3的年龄为: 18
赋值后的p1的年龄为: 18
赋值后的p2的年龄为: 18
请按任意键继续. . .

추천

출처blog.csdn.net/Little_XWB/article/details/108187849