943,920 Members | Top Members by Rank

Ad:
  • C++ Discussion Thread
  • Unsolved
  • Views: 1106
  • C++ RSS
Jun 26th, 2009
0

Pos/Pre fix operator overloading question.

Expand Post »
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.
Similar Threads
Reputation Points: 10
Solved Threads: 0
Light Poster
coachHinesfan is offline Offline
32 posts
since Oct 2008
Jun 26th, 2009
0

Re: Pos/Pre fix operator overloading question.

So you can do things like a = b++ and a = ++b . Chaining and combining expressions accounts for most of the weirdness in how operator overloading works. But you don't have to follow the conventions even though it's a good idea to stick to idioms that everyone expects. Your operators could return void and still work for the basic cases of b++; and ++b; .
Last edited by Tom Gunn; Jun 26th, 2009 at 3:20 pm.
Reputation Points: 1446
Solved Threads: 135
Practically a Master Poster
Tom Gunn is offline Offline
681 posts
since Jun 2009
Jun 26th, 2009
0

Re: Pos/Pre fix operator overloading question.

Team Colleague
Reputation Points: 2780
Solved Threads: 312
long time no c
Dave Sinkula is offline Offline
4,790 posts
since Apr 2004

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C++ Forum Timeline: c++ rapi application
Next Thread in C++ Forum Timeline: Using resources for main window





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC