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 遞增運算髮重載++
通過重載運算符,實現自己的整型數據