Tuesday, 22 July 2014

C++ Operator overloading using friend function

//opoverloadfriendfunc.C

#include<iostream>
using namespace std;

class traffic {
        int left, right;
public:
        traffic() {}
        traffic(int lt, int rt)
        {
                left = lt;
                right = rt;
        }
        void show()
        {
                cout << "left :" << left;
                cout << " right :" << right << endl;
        }

        friend traffic operator+(traffic ob1, traffic ob2);
        friend traffic operator-(traffic ob1, traffic ob2);
        friend traffic operator++(traffic &ob);
        friend traffic operator--(traffic &ob);
};

traffic operator+(traffic ob1, traffic ob2)
{
        traffic temp;
        temp.left = ob1.left + ob2.left;
        temp.right = ob1.right + ob2.right;

        return temp;
}

traffic operator-(traffic ob1, traffic ob2)

{
        traffic temp;

        temp.left = ob1.left - ob2.left;
        temp.right = ob1.right - ob2.right;

        return temp;
}
traffic operator++(traffic &ob)
{
        ob.left++;
        ob.right++;

        return ob;
}

traffic operator--(traffic &ob)
{
        ob.left--;
        ob.right--;

        return ob;
}

int main()
{
        traffic ob1(5, 10), ob2(10 , 20);

        ob1.show();
        ob2.show();

        ob1 = ob1+ob2;

        ob1.show();
       
        cout << "**********************" << endl;

        ob1 = ob1-ob2;

        ob1.show();
        cout << "**********************" << endl;
        ++ob1;

        ob1.show();
        cout << "**********************" << endl;
        --ob2;

        ob2.show();
        return 0;
}

result:
left :5 right :10
left :10 right :20
left :15 right :30
**********************
left :5 right :10
**********************
left :6 right :11
**********************
left :9 right :19

No comments:

Post a Comment