|
@@ -0,0 +1,117 @@
|
|
|
+//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
|