Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // cpp program: Operator overloading [full] Active: friend methods, Inactive: member methods
- // Author: fueanta
- #include <iostream>
- #include <conio.h> // supported by windows platform only, just ignore for other OS
- using namespace std;
- class point
- {
- int x,y;
- public:
- point(int x=0, int y=0):x(x),y(y) {}
- void show();
- // Operator Over-loadings:
- //point operator-();
- friend point operator-(point);
- //point operator+(point);
- friend point operator+(point, point);
- //point operator+(int);
- friend point operator+(point, int);
- void operator=(point);
- // XXX friend void operator=(point, point);
- //point operator+=(int);
- friend point operator+=(point&, int);
- //void operator+=(point);
- friend void operator+=(point&, point);
- //point operator++();
- friend point operator++(point&);
- //point operator++(int);
- friend point operator++(point&, int);
- //bool operator==(point);
- friend bool operator==(point,point);
- friend point operator+(int, point);
- friend ostream & operator << (ostream &, point&);
- friend istream & operator >> (istream &, point&);
- };
- void point::show()
- {
- cout << "X= " << x << "\tY= " << y << endl;
- }
- /*point point::operator-()
- {
- return point(-x,-y);
- }*/
- point operator-(point i)
- {
- return point(-i.x, -i.y);
- }
- /*point point::operator+(point i)
- {
- return point(x+i.x, y+i.y);
- }*/
- point operator+(point i,point j)
- {
- return point(i.x+j.x, i.y+j.y);
- }
- /*point point::operator+(int i)
- {
- return point(x+i, y+i);
- }*/
- point operator+(point i, int j)
- {
- return point(i.x+j, i.y+j);
- }
- void point::operator=(point i)
- {
- x=i.x; y=i.y;
- //return *this; then, return type should be given.
- }
- /*point point::operator+=(int i)
- {
- x+=i; y+=i;
- return *this;
- }*/
- point operator+=(point& i, int j)
- {
- i.x+=j; i.y+=j;
- return i;
- }
- /*void point::operator+=(point i)
- {
- x+= i.x; y+= i.y;
- //return *this; then, return type should be given.
- }*/
- void operator+=(point& i, point j)
- {
- i.x+=j.x; i.y+=j.y;
- }
- /*point point::operator++()
- {
- return point(++x, ++y);
- }*/
- point operator++(point& i)
- {
- return point(++i.x, ++i.y);
- }
- /*point point::operator++(int)
- {
- return point(x++, y++);
- }*/
- point operator++(point& i,int)
- {
- return point(i.x++, i.y++);
- }
- /*bool point::operator==(point i)
- {
- if(x==i.x && y==i.y)
- return true;
- else
- return false;
- }*/
- bool operator==(point i, point j)
- {
- if (i.x==j.x && i.y==j.y)
- return true;
- else
- return false;
- }
- point operator+(int i, point j)
- {
- return point(i+j.x, i+j.y);
- }
- ostream & operator << (ostream & out, point &i)
- {
- out << "X= " << i.x << ", Y= " << i.y << "; ";
- return out;
- }
- istream & operator >> (istream & in, point &i)
- {
- in >> i.x >> i.y;
- return in;
- }
- int main()
- {
- point p1(10,20),p2(20,30),p3;
- p3= -p1;
- p3.show();
- p3= p1+p2;
- p3.show();
- p3= p1+5;
- p3.show();
- p3= p2;
- p3.show();
- p3+= 5;
- p3.show();
- p1+= p2;
- p1.show();
- p2.show();
- p3= ++p1;
- p3.show();
- p1.show();
- p3= p2++;
- p3.show();
- p2.show();
- point p4(31,51);
- p4= 5+p2;
- p4.show();
- if (p1==p4)
- cout << "Equal." << endl;
- else
- cout << "Not Equal." << endl;
- cout << "P1: " << p1 << " P2: " << p2 << endl;
- cout << "Give p3: x and y\n";
- cin >> p3;
- cout << "P3: " << p3 << endl;
- getch(); // assosiated with conio.h
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement