Hello everyone. I have been reading c++ in the book "C++ : A beginners Guide" and I have some questions about overloading a unary operator.
This is the code I have been working on/trying to understand :
/* Demonstrating overloading a unary operator
with a friedn function(prefix and postfix) */
#include<iostream>
using namespace std ;
class ThreeD {
int x, y, z ;
public:
ThreeD( ) { x = y = z = 0 ; }
ThreeD(int i,int j,int k) { x = i ; y = j ; z = k ; }
friend ThreeD operator++(ThreeD &op1) ;
friend ThreeD operator++(ThreeD &op1,int notused) ;
void show( ) ;
} ;
ThreeD operator++(ThreeD &op1)
{
op1.x++ ;
op1.y++ ;
op1.z++ ;
return op1 ;
}
ThreeD operator++(ThreeD &op1, int notused)
{
ThreeD temp = op1 ;
op1.x++ ;
op1.y++ ;
op1.z++ ;
return temp ;
}
void ThreeD::show( )
{
cout << x << ", " << y << ", " << z << "\n\n" ;
}
int main( )
{
ThreeD a(1,2,3) ;
ThreeD b ;
cout << "Original a value : " ;
a.show( ) ;
++a ;
cout << "a after ++a : " ;
a.show( ) ;
cout << "Original b value : " ;
b.show( ) ;
b = a ;
cout << "b after b = a : " ;
b.show( ) ;
b++ ;
cout << "b after b++ : " ;
b.show( ) ;
return 0 ;
}
This is the question i have about this program and pre/post fix operator overloading concept :
Question : Why does the prefix/postfix version of the
operator overloaded function have to return a value ?
I don't understand why a value should be returned yet it is
a reference.
Your help will be appreciated.
Thank You.