123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- //4.5 运算符重载
- //运算符重载概念:对已有的运算符进行重新定义,赋予其另一种功能,以适应不同的数据类型
- //4.5.1
- //作用:实现两个自定义数据类型相加的运算
- #if(0)
- #include <iostream>
- //➕号运算符重载
- //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
|