加号运算符重载 对于内置的数据类型,编译器知道如何进行运算但是对于自定义数据类型,编译器不知道如何运算利用运算符重载 可以让符号有新的含义利用加号重载 实现p1 + p2 Person数据类型相加操作利用成员函数 和 全局函数 都可以实现重载关键字 operator +成员本质 p1.operator+(p2)全局本质 operator+(p1,p2)简化 p1 + p2运算符重载 也可以发生函数重载 登录后复制 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class Person { public: Person(){}; Person(int a, int b) :m_A(a), m_B(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; //} int m_A; int m_B; }; //利用全局函数实现加号运算符重载 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; } 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(10, 10); Person p2(20, 20); Person p3 = p1 + p2; //Person p3 = operator+(p1, p2); //全局函数本质 //Person p3 = p1.operator+(p2); //成员函数本质 cout << "p3.m_A = " << p3.m_A << " p3.m_B = " << p3.m_B << endl; //运算符重载 可不可以发生 函数重载? 可以 //p1 + 10; } int main(){ test01(); system("pause"); return EXIT_SUCCESS; } 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69. 原创作者: zaishu 转载于: https://blog.51cto.com/zaishu/11898374