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 << (ostream& os,Point& that) 63 { 64 return os << "x=" << that.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 }