【C++ 08】運算符重載

1 加號運算符重載

通過成員函數重載+號

通過全局函數重載+


//加號運算符重載

class Person 
{
public: 
//成員函數本質 p3 = p.operator+(p2);
Person operator+(Person& p1)
{
	Person temp;
	temp.m_A = this->m_A + p2.m_A;
	temp.m_B = this->.m_B + p2.m_B;
	return temp;
}
public:
	int m_A;
	int m_B;
};

Person operator+(Person& p1, Person& p2)
{
	Person temp;
	temp.m_A = p1.m_A + p2.m_A;
	temp.m_B = p1.m_B + p2.m_B;
	return temp;
}

void test01()
{
	Person p1;
	p1.m_A = 10;
	p1.m_B = 10;
	Person p2;
	p2.m_A = 20;
	p2.m_B = 20;
	Person p3 = p1 + p2;

	cout << " p3.m_A =" << p3.m_A << endl;
	cout << " p3.m_B = " << p3.m_B << endl;
}

總結:對於內置數據類型的表達式的運算符是不可以改變的;

不要濫用運算符重載;

2 左移運算符重載

class Person 
{

	friend ostream& operator<<(ostream& cout, Person& p);
public:
	Person(int a, int b)
	{
		m_A = a;
		m_B = b;
	}
private:
	//不會利用成員函數重載,因爲無法實現cout在左側
	int m_A;
	int m_B;
};

ostream & operator<<(ostream &cout,Person &p)
{
	cout << "m_A = " << p.m_A << "m_B = " << p.m_B;
	return cout;
}

3 遞增運算髮重載++

通過重載運算符,實現自己的整型數據

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章