加号运算符重载
#includeusing namespace std; class Person { public: //成员函数重载+号 Person p3 = p1.operator+(p2); int m_A; int m_B; }; //全局函数重载+号 Person p3 = operator+(p1, p2); 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 text01() { Person p1; p1.m_A = 10; p1.m_B = 10; Person p2; p2.m_A = 10; p2.m_B = 10; //成员函数重载本质调用 // Person p3 = p1.operator+(p2); //全局函数重载本质调用 //Person p3 = operator+(p1, p2); Person p3 = p1 + p2; cout << "p3.m_A=" << p3.m_A < 输出结果为:
p3.m_A=20
p3.m_B=20左移运算符重载
#includeusing namespace std; class Person { public: int m_A; int m_B; }; //全局函数实现左移重载 //ostream对象只能有一个 ostream& operator<<(ostream& cout, Person& p) //cout名称可以随意换 out { cout << "a:" << p.m_A << " b:" << p.m_B; return cout; } void text01() { Person p1; p1.m_A = 10; p1.m_B = 20; cout << p1 << endl; } int main() { text01(); return 0; } 输出结果为:
a:10 b:20



