//4.5 运算符重载 //运算符重载概念:对已有的运算符进行重新定义,赋予其另一种功能,以适应不同的数据类型 //4.5.1 //作用:实现两个自定义数据类型相加的运算 #if(0) #include //➕号运算符重载 //1、成员函数重载? //2、全局函数重载? class Person { public: //1、通过成员函数重载+ //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; }; //2、通过全局函数重载+号 Person operator+(Person& p1, Person& p2) { Person temp; temp.m_A = p1.m_A + p2.m_A; temp.m_B = p2.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; p1.m_A = 10; p1.m_B = 10; Person p2; p2.m_A = 10; p2.m_B = 10; //成员函数重载本质的调用 //Person p3 = p1.operator+(p2); //全局函数重载本质的调用 //Person p3 = operator+(p1, p2); Person p3 = p1 + p2; //运算符重载也可以发生函数重载 Person p4 = p1 + 100; //Person + int std::cout << "p3.m_A = " << p3.m_A << std::endl; std::cout << "p3.m_B = " << p3.m_B << std::endl; std::cout << "p4.m_A = " << p4.m_A << std::endl; std::cout << "p4.m_B = " << p4.m_B << std::endl; } int main() { test01(); system("pause"); return 0; } //总结1 :对于内置的数据类型的表达式的运算符是不可能改变的 //总结2 :不要滥用运算符重载 #endif