C++ 双目运算符重载
2021-07-17 01:06
标签:color this pre hat += amp c++ 调用 operator C++ 双目运算符重载 标签:color this pre hat += amp c++ 调用 operator 原文地址:https://www.cnblogs.com/xkk956227639/p/9532885.html 1 class Point
2 {
3 int x;
4 int y;
5 public:
6 //Point(void) { }
7 Point(int _x=0,int _y=0)
8 {
9 x = _x;
10 y = _y;
11 }
12
13 Point(Point& that)
14 {
15 x = that.x;
16 y = that.y;
17 }
18
19 Point operator + (Point& that)
20 {
21 Point t;//此行代码会调用无参构造
22 t.x = x + that.x;
23 t.y = y + that.y;
24 return t;
25 }
26
27 Point operator += (Point& that)
28 {
29 x = x + that.x;
30 y = y + that.y;
31 return *this;
32 }
33
34 Point operator * (Point& that)
35 {
36 Point t;
37 t.x = x * that.x;
38 t.y = y * that.y;
39 return t;
40 }
41
42 Point operator ++ (int)
43 {
44 Point t(* this);//此行代码会调用无参构造
45 x++;
46 y++;
47 return t;
48 }
49
50 Point operator ++ ()
51 {
52 x++;
53 y++;
54 return *this;
55 }
56
57 Point* operator -> (void)
58 {
59 return this;
60 }
61
62 friend ostream& operator that)
63 {
64 return os "x=" "," "y=" that.y;
65 }
66
67 friend Point operator - (Point& dest,Point& that);
68 friend Point operator -= (Point& dest,Point& that);
69 friend Point operator / (Point& dest,Point& that);
70 friend Point operator -- (Point& that);
71 friend Point operator -- (Point& that,int);
72 friend istream& operator >> (istream& os,Point& that);
73 };
74
75 Point operator - (Point& dest,Point& that)
76 {
77 Point t;//此行代码会调用无参构造
78 t.x = dest.x - that.x;
79 t.y = dest.y - that.y;
80 return t;
81 }
82
83 Point operator -= (Point& dest,Point& that)
84 {
85 dest.x = dest.x - that.x;
86 dest.y = dest.y - that.y;
87 return dest;
88 }
89
90 Point operator / (Point& dest,Point& that)
91 {
92 Point t;
93 t.x = dest.x / that.x;
94 t.y = dest.y / that.y;
95 return t;
96 }
97
98 Point operator -- (Point& that,int)
99 {
100 Point t(that);//此行代码会调用无参构造
101 that.x--;
102 that.y--;
103 return t;
104 }
105
106 Point operator -- (Point& that)
107 {
108 that.x--;
109 that.y--;
110 return that;
111 }
112
113 istream& operator >> (istream& is,Point& that)
114 {
115 return is >> that.x >> that.y;
116 }