Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Purpose of Dummy Parameter in Postfix Operator Overload? c++

When overloading the postfix operator, I can do something simple like

Class Foo
{
private: 
   int someBS;
public:
   //declaration of  pre &postfix++
   Foo operator++();
   //rest of class not shown
};

Prefix doesn't need to take any parameters, so when I define it, something like

Foo Foo::operator()
{
   someBS ++;
   return *this;
}

and it makes perfect sense to me.

When I go to define the postfix overload I have to include a dummy int parameter

Foo Foo::operator++(int)
{
   Foo temp = *this;
   someBS ++;
   return temp;
}

My question is why? I don't ever use it in the method. The prefix operator doesn't require one. The postfix returning the temp value is not dependent on the dummy parameter. I know that if I want to overload a postfix operator that's how it's done, I just want to know the reason behind.

like image 1000
Podo Avatar asked Dec 14 '22 06:12

Podo


1 Answers

The dummy parameter is simply there to distinguish between the postfix and prefix operators. The name ++ or -- is the same in both cases, so there has to be some way to specify which one you're defining. Adding a dummy parameter is perhaps not elegant, but any alternatives would probably have required inventing new syntax (perhaps a postfix keyword, which would break code that uses postfix as an identifier).

like image 61
Keith Thompson Avatar answered Mar 04 '23 03:03

Keith Thompson