加号运算符重载
作用:实现两个自定义数据类型相加的运算
1.成员函数实现 + 号运算符重载
class Person {public:Person() {};Person(int a, int b){this->m_A = a;this->m_B = b;}//1.成员函数实现 + 号运算符重载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;};void test() {Person p1(10, 10);Person p2(20, 20);//1.成员函数方式Person p3 = p2 + p1; //相当于 p2.operaor+(p1)cout << "mA:" << p3.m_A << " mB:" << p3.m_B << endl;}int main() {test();system("pause");return 0;}2.全局函数实现 + 号运算符重载class Person {public:Person() {};Person(int a, int b){this->m_A = a;this->m_B = b;}public:int m_A;int m_B;};//2.全局函数实现 + 号运算符重载Person operator+(const Person& p1, const 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 test() {Person p1(10, 10);Person p2(20, 20);//2.全局函数方式Person p3 = p2 + p1; //相当于 operaor+(p1,p2)cout << "mA:" << p3.m_A << " mB:" << p3.m_B << endl;}int main() {test();system("pause");return 0;}
3.运算符重载 可以发生函数重载
class Person {public:Person() {};Person(int a, int b){this->m_A = a;this->m_B = b;}public:int m_A;int m_B;};//3.运算符重载 可以发生函数重载 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);//3.运算符重载也可以发生函数重载,如下person + intPerson p4 = p3 + 10; //相当于 operator+(p3,10)cout << "mA:" << p4.m_A << " mB:" << p4.m_B << endl;}int main() {test();system("pause");return 0;}
注意全局函数的运算重载的函数名是编译器给的。
总结1:对于内置的数据类型的表达式的的运算符是不可能改变的,即1+1=2不可变,不会为3.
总结2:不要滥用运算符重载,即你写的函数名是加法,可是函数的实现是减法,可以运行但是这叫滥用。
如果觉得《C++运算符重载之加号运算符重载》对你有帮助,请点赞、收藏,并留下你的观点哦!