重载加号运算符可以实现对象的属性直接对应相加,实现对象p3 = p1 + p2。
以Person类为例,加号运算符重载方法为:
1.成员函数重载
Person operator+ (Person &p)
2.全局函数重载
Person operator+ (Person& p1, Person& p2)
具体代码示例如下:
#include<iostream>
using namespace std;
class Person
{
public:
int m_A;
int m_B;
Person()
{
}
Person(int a, int b)
{
m_A = a;
m_B = b;
}
//1.成员函数重载加号运算符 本质:Person p3 = p1.operator+ (p2);
Person operator+ (Person &p)
{
Person temp;
temp.m_A = this->m_A + p.m_A;
temp.m_B = this->m_B + p.m_B;
return temp;
}
};
2.全局函数重载加号运算符
//Person operator+ (Person& p1, Person& p2) //本质: Person p3 = operator+ (p1,p2);
//{
// Person temp;
// temp.m_A = p1.m_A + p2.m_A;
// temp.m_B = p1.m_B + p2.m_B;
// return temp;
//}
//函数重载的版本
Person operator+ (Person& p1, int num)
{
Person temp;
temp.m_A = p1.m_A + num;
temp.m_B = p1.m_B + num;
return temp;
}
void test01()
{
Person p1(2,5);
Person p2(3,8);
Person p3 = p1 + p2;//运算符重载也可以发生函数重载
cout << "p3.m_A = " << p3.m_A << endl;
cout << "p3.m_B = " << p3.m_B << endl;
Person p4 = p1 + 10;
cout << "p4.m_A = " << p4.m_A << endl;
cout << "p4.m_B = " << p4.m_B << endl;
}
int main() {
test01();
}
运行结果为: