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:
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(); }
ahh.. thank you very much.. you saved my day :)
ReplyDeletec++ sample programs for coders
ReplyDeletecplusplus - illustrating function overloading