Thursday, 5 April 2018

Limitation OR Pitfalls of Operator Overloading

The prefix ++ or - notation (Ex  ++x  or  --x) cause a variable to be updated before its value is used in the expression , where as postfix ++ or -- notation (Ex  x++  or   x--)  Cause it to be updated after its value is used. However , the statement,

++s;
Has exactly the same effect statement
s++;

When ++ and -- operators are overloaded that is there is no distincton between  the prefix and postfix overloaded operator function.

#include<conio.h>
#include<iostream.h>
class increment
{
int x,y,z;
public:
void getdata(int a, int b, int c)
{
 x = a;
y = b;
z = c;
}
void display( )
{
cout<<"\t x="<<x<<"\ty--"<<y<<"\tz--"<<z;
}
increment operator ++( )
{
increment temp;
temp.x = x++;
temp.y = y++;
temp.z = z++;
return temp;
}
};
void main( )
{
increment s1, s2, s3;
clrscr( );
s1.getdata(10, 20, 30);
cout<<"\n\toriginal data--->\n";
s1.display( );
s2 = ++s1;
cout<<"\n\tAfter overloading prefix increment data of object s2 is--->\n";
s2.display( );
getch( );
}

Output:-
original data--->
x=10   y--20    z--30
After overloading prefix increment data of object s2 is--->
x-10    y--20     z--30

--------------------------------------------------------------------------------------------------------------------------
#include<conio.h>
#include<iostream.h>
class increment
{
int x,y,z;
public:
void getdata(int a, int b, int c)
{
 x = a;
y = b;
z = c;
}
void display( )
{
cout<<"\t x="<<x<<"\ty--"<<y<<"\tz--"<<z;
}
increment operator ++( )
{
increment temp;
temp.x = ++x;
temp.y = ++y;
temp.z = ++z;
return temp;
}
};
void main( )
{
increment s1, s2;
clrscr( );
s1.getdata(10, 20, 30);
cout<<"\n\toriginal data--->\n";
s1.display( );
s2 = s1++;
cout<<"\n\tAfter overloading prefix increment data of object s2 is--->\n";
s2.display( );
getch( );
}

Output:-
original data--->
x=10   y--20    z--30
After overloading prefix increment data of object s2 is--->
x-10    y--20     z--30

0 Comments:

Post a Comment

Popular Posts

Categories

Android (21) AngularJS (1) Books (3) C (75) C++ (81) Data Strucures (4) Engineering (13) FPL (17) HTML&CSS (38) IS (25) Java (85) PHP (20) Python (85) R (69) Selenium Webdriver (2) Software (13) SQL (27)