Advertisement
fueanta

Operator Overloading Full [ friend function ]

Sep 8th, 2016
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.55 KB | None | 0 0
  1. // cpp program: Operator overloading [full]  Active: friend methods, Inactive: member methods
  2. // Author: fueanta
  3.  
  4. #include <iostream>
  5. #include <conio.h> // supported by windows platform only, just ignore for other OS
  6.  
  7. using namespace std;
  8.  
  9. class point
  10. {
  11.    int x,y;
  12. public:
  13.     point(int x=0, int y=0):x(x),y(y) {}
  14.     void show();
  15.     // Operator Over-loadings:
  16.     //point operator-();
  17.     friend point operator-(point);
  18.     //point operator+(point);
  19.     friend point operator+(point, point);
  20.     //point operator+(int);
  21.     friend point operator+(point, int);
  22.     void operator=(point);
  23.     // XXX friend void operator=(point, point);
  24.     //point operator+=(int);
  25.     friend point operator+=(point&, int);
  26.     //void operator+=(point);
  27.     friend void operator+=(point&, point);
  28.     //point operator++();
  29.     friend point operator++(point&);
  30.     //point operator++(int);
  31.     friend point operator++(point&, int);
  32.     //bool operator==(point);
  33.     friend bool operator==(point,point);
  34.     friend point operator+(int, point);
  35.     friend ostream & operator << (ostream &, point&);
  36.     friend istream & operator >> (istream &, point&);
  37. };
  38.  
  39. void point::show()
  40. {
  41.     cout << "X= " << x << "\tY= " << y << endl;
  42. }
  43. /*point point::operator-()
  44. {
  45.     return point(-x,-y);
  46. }*/
  47. point operator-(point i)
  48. {
  49.     return point(-i.x, -i.y);
  50. }
  51. /*point point::operator+(point i)
  52. {
  53.     return point(x+i.x, y+i.y);
  54. }*/
  55. point operator+(point i,point j)
  56. {
  57.     return point(i.x+j.x, i.y+j.y);
  58. }
  59. /*point point::operator+(int i)
  60. {
  61.     return point(x+i, y+i);
  62. }*/
  63. point operator+(point i, int j)
  64. {
  65.     return point(i.x+j, i.y+j);
  66. }
  67. void point::operator=(point i)
  68. {
  69.     x=i.x; y=i.y;
  70.     //return *this; then, return type should be given.
  71. }
  72. /*point point::operator+=(int i)
  73. {
  74.     x+=i; y+=i;
  75.     return *this;
  76. }*/
  77. point operator+=(point& i, int j)
  78. {
  79.     i.x+=j; i.y+=j;
  80.     return i;
  81. }
  82. /*void point::operator+=(point i)
  83. {
  84.     x+= i.x; y+= i.y;
  85.     //return *this; then, return type should be given.
  86. }*/
  87. void operator+=(point& i, point j)
  88. {
  89.     i.x+=j.x; i.y+=j.y;
  90. }
  91. /*point point::operator++()
  92. {
  93.     return point(++x, ++y);
  94. }*/
  95. point operator++(point& i)
  96. {
  97.     return point(++i.x, ++i.y);
  98. }
  99. /*point point::operator++(int)
  100. {
  101.     return point(x++, y++);
  102. }*/
  103. point operator++(point& i,int)
  104. {
  105.     return point(i.x++, i.y++);
  106. }
  107. /*bool point::operator==(point i)
  108. {
  109.     if(x==i.x && y==i.y)
  110.         return true;
  111.     else
  112.         return false;
  113. }*/
  114. bool operator==(point i, point j)
  115. {
  116.     if (i.x==j.x && i.y==j.y)
  117.         return true;
  118.     else
  119.         return false;
  120. }
  121. point operator+(int i, point j)
  122. {
  123.     return point(i+j.x, i+j.y);
  124. }
  125. ostream & operator << (ostream & out, point &i)
  126. {
  127.     out << "X= " << i.x << ", Y= " << i.y << "; ";
  128.     return out;
  129. }
  130. istream & operator >> (istream & in, point &i)
  131. {
  132.     in >> i.x >> i.y;
  133.     return in;
  134. }
  135.  
  136. int main()
  137. {
  138.     point p1(10,20),p2(20,30),p3;
  139.     p3= -p1;
  140.     p3.show();
  141.     p3= p1+p2;
  142.     p3.show();
  143.     p3= p1+5;
  144.     p3.show();
  145.     p3= p2;
  146.     p3.show();
  147.     p3+= 5;
  148.     p3.show();
  149.     p1+= p2;
  150.     p1.show();
  151.     p2.show();
  152.     p3= ++p1;
  153.     p3.show();
  154.     p1.show();
  155.     p3= p2++;
  156.     p3.show();
  157.     p2.show();
  158.     point p4(31,51);
  159.     p4= 5+p2;
  160.     p4.show();
  161.     if (p1==p4)
  162.         cout << "Equal." << endl;
  163.     else
  164.         cout << "Not Equal." << endl;
  165.     cout << "P1: " << p1 << " P2: " << p2 << endl;
  166.     cout << "Give p3: x and y\n";
  167.     cin >> p3;
  168.     cout << "P3: " << p3 << endl;
  169.     getch(); // assosiated with conio.h
  170.     return 0;
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement