首先我们有一个Person类如下
class Person
{
public:
Person(int age, int b)
{
m_Age = age;
m_B = b;
}
public:
int m_Age;
int m_B;
};
Person p1(10, 20);
Person p2(10, 20);
Person p3 = p1 + p2;
如何计算p3?
编译器并不支持直接计算p1 + p2,这个时候需要我们用到运算符重载的技术
运算符重载的实现有两种方法:
1.利用全局函数
Person operator+(Person &p1, Person &p2)
{
Person temp;
temp.m_Age = p1.m_Age + p2.m_Age;
temp.m_B = p1.m_B + p2.m_B;
return temp;
}
这样编译器就能识别出 p1+p2如何运算了
全局函数实现的本质: Person p3 = operator(p1, p2)
2.利用成员函数
我们可以在Person类中利用成员函数实现运算符重载
class Person
{
public:
Person(int age, int b)
{
m_Age = age;
m_B = b;
}
Person operator+(Person &p)
{
Person temp;
temp.m_Age = this->m_Age + p.m_Age;
temp.m_B = this->m_B + p.m_B;
return temp;
}
public:
int m_Age;
int m_B;
};
成员函数实现的本质: Person p3 = p1.operator+(p2);
运算符重载有很多类型,上面只是举例了加号运算符重载,运算符重载在帮助我们运算自定义数据类型提供了很多便利。