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

Codecademy Code Foundations

Popular Posts

Categories

Android (23) AngularJS (1) Assembly Language (2) Books (10) C (75) C# (12) C++ (81) Course (1) Data Strucures (4) Downloads (1) Engineering (13) flutter (1) FPL (17) Hadoop (1) HTML&CSS (40) IS (25) Java (89) Leet Code (4) Pandas (1) PHP (20) Projects (19) Python (423) R (69) Selenium Webdriver (2) Software (14) SQL (27)