#include <iostream>
#include <string>
using namespace std;/*
### 4.5 运算符重载
运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型
*//*
4.5.1 加号运算符重载
作用:实现两个自定义数据类型相加的运算内置的数据类型,编译器知道如何机进行运算
如 int a = 10; int b = 10int c = a + b//若将类内的属性进行相加如何进行呢?
通过 成员或全局函数 operator+ 实现 运算符进行重载*/class Person
{
public:Person() {};Person(int a, int b){this->m_A = a;this->m_B = b;}//成员函数实现 + 号运算符重载Person operator+(const Person& p) {Person temp;temp.m_A = this->m_A + p.m_A;temp.m_B = this->m_B + p.m_B;return temp;}public:int m_A;int m_B;};/*
//全局函数 实现 + 号运算符重载
Person operator+(const Person& p1, const Person& p2) {Person temp(0, 0);temp.m_A = p1.m_A + p2.m_A;temp.m_B = p1.m_B + p2.m_B;return temp;}
*///运算符重载 可以发生函数重载
Person operator+(const Person& p2, int val) {Person temp;temp.m_A = p2.m_A + val;temp.m_B = p2.m_B + val;return temp;
}void test() {Person p1(10, 10);Person p2(20, 20);//成员函数方式/全局函数形式 Person p3 = p1 + p2; 相当于 p2.operaor+(p1)cout << "mA:" << p3.m_A << "mB :" << p3.m_B << endl;//函数的重载Person p4 = p3 + 10; //相当于 operator+(p3, 10)cout << "mA : " << p4.m_A << "mB:" << p4.m_B << endl;}int main() {test();system("pause");return 0;
}
4.5 运算符重载
运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型
4.5.1 加号运算符重载
作用:实现两个自定义数据类型相加的运算