Tuesday, January 3, 2012

Overloading Unary Operator in C++

In this Example I will demonstrate overloading a unary operator. The overloading is done in similar way as we did for binary operator. In this example I will be using a Vector Class. The operator we are going to over load is the unary "~" (tilde) operator. although you can use any unary overloadable operator.
Method: In this example the overloaded operator will be the part of the class i.e. the over loaded definition will be a member function. (As we know overloading can be done using non member functions too). So the unary operator will not have any arguments in it.
We will overload ~ operator so that it will reflect the vector so that its z component becomes x component and vice versa. So input vector will be 2i+3j+5k and its output vector will be 5i+3j+2k. although you can do anything you like.

Code:
#include<iostream>

using namespace std;


class vector
{
    int x,y,z;
    public:
    vector()
    {
        x=y=z=0;
        //default constructor
    }
    vector(int a, int b,int c)
    {
        x=a;y=b;z=c;
    }
    void show()// to show vector
    {
        cout<<"\n Vector="<<x<<"i+"<<y<<"j+"<<z<<"k";
    }
    //the operator overloading returns a vector
    //although return type can be anything
    vector operator~()
    {
        //notice how the ans object is being created
        // we are passing it the value by our constructor
        vector ans(z,y,x);
        return(ans);
    }
};

int main()
{
    //create 2 vector
    // one has value i+2j+3k other is 0
    vector v(1,2,3),c;
    //use ~ operator to reflect the vector and pas it to c
    c=~v;
    v.show();
    c.show();
    
}

2 comments: