Increment ++ and Decrement -- Operator Overloading in C++ Programming
In this tutorial, increment ++ and decrements -- operator are overloaded in best possible way, i.e., increase the value of a data member by 1 if ++ operator operates on an object and decrease value of data member by 1 if -- operator is used.
Increment Operator Overloading
/* C++ program to demonstrate the overloading of ++ operator. */
#include <iostream>
using namespace std;
class Check
{
private:
int i;
public:
Check(): i(0) { }
void operator ++( ) { ++i; }
void Display( ) { cout<<"i="<<i<<endl; }
};
int main( )
{
Check obj;
/* Displays the value of data member i for object obj */
obj.Display( );
/* Invokes operator function void operator ++( ) */
++obj;
/* Displays the value of data member i for object obj */
obj.Display( );
return 0;
}
Output
i=0
i=1
Explanation: Initially when the object obj is declared, the value of data member i for object obj is 0 (constructor initializes i to 0). When ++ operator is operated on obj, operator function void operator++( ) is invoked which increases the value of data member i to 1.
This program is not complete in the sense that, you cannot use code:obj1=++obj;
It is because the return type of operator function in above program is void. Here is the little modification of above program so that you can use code obj1=++obj.
/* C++ program to demonstrate the working of ++ operator overloading. */
#include <iostream>
using namespace std;
class Check
{
private:
int i;
public:
Check( ): i(0) { }
Check operator ++( ) /* Notice, return type Check*/
{
Check temp; /* Temporary object check created */
++i; /* i increased by 1. */
temp.i=i; /* i of object temp is given same value as i */
return temp; /* Returning object temp */
}
void Display( ){ cout<<"i="<<i<<endl; }
};
int main( )
{
Check obj, obj1;
obj.Display( );
obj1.Display( );
obj1=++obj;
obj.Display( );
obj1.Display( );
return 0;
}
Output
i=0
i=0
i=1
i=1
This program is similar to above program. The only difference is that, the return type of operator function is Check in this case which allows to use both codes ++obj; obj1=++obj;. It is because, temp returned from operator function is stored in object obj. Since, the return type of operator function is Check, you can also assign the value of obj to another object. Notice that, = (assignment operator) does not need to be overloaded because this operator is already overloaded in C++ library.
No comments:
Post a Comment