对已有的运算符重新进行定义,赋予其另外一种功能,以适应不同的数据类型,作用:实现两个自定义的数据类型相加的运算
运算符重载其实就是定义一个函数,在函数体内实现想要的功能,当用到该运算符时,编译器会自动调用这个函数。也就是说,运算符重载是通过函数实现的,它本质上是函数重载。
返回值类型 operator 运算符名称 (形参表列){
//TODO:
}
operator是关键字,专门用于定义重载运算符的函数,和运算符一起构成函数名
例:将两个对象的某些属性对应相加
#includeusing namespace std;class Person{public: int m_a; int m_b; //成员函数重载的本质调用 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; } Person operator+(int num) //在此处进行运算符重载,关键字operator+运算符 { Person temp; temp.m_a = this->m_a + num; temp.m_b = this->m_b + num; return temp; }};//全局函数重载//成员函数重载的本质调用//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; Person p2; Person p3; p1.m_a = 10; p1.m_b = 10; p2.m_a = 10; p2.m_b = 10; p3 = p1 + p2; //本质:p3 = p1 operator+(p2) cout << p3.m_a<< endl; cout << p3.m_b << endl; //运算符重载也可以发生函数重载 p3 = p1 + 100; //原型:Person operator+(int num)}int main(){ test01(); return 0;}