с перегрузкой операторов постфикса и префикса

Пожалуйста, обратите внимание на следующий код

#include <iostream>
using namespace std;
class Digit
{

private:
    int m_digit;
public:
    Digit(int ndigit=0){
     m_digit=ndigit;
                        }
    Digit& operator++();//prefix
    Digit& operator--();   //prefix
        Digit operator++(int);
        Digit operator--(int);
        int get() const { return m_digit;}
};
Digit& Digit::operator++(){

   ++m_digit;
   return *this;
}
Digit& Digit::operator--(){
 --m_digit;
 return *this;

}
Digit Digit::operator++(int){
Digit cresult(m_digit);
++(*this);
return cresult;


}
    Digit Digit::operator--(int){
Digit cresult(m_digit);
--(*this);
return cresult;


}
    int main(){

     Digit cDigit(5);
      ++cDigit;
        cDigit++;
         cout<<cDigit.get()<<endl;
         cout<<cDigit.get()<<endl;





     return 0;
    }

, здесь реализованы две версии операторов постфикса и префикса, я читал, что разница достигается путем введения еще одного так называемого фиктивного аргумента, но у меня есть вопрос, видим ли мы объявление этих

Digit& operator++();//prefix
             Digit& operator--();   //prefix
        Digit operator++(int);
        Digit operator--(int);

они отличаются знаком &, так зачем нужен фиктивный аргумент? а также в обоих случаях, например, оператор ++ написан перед аргументом, и не означает ли это, что они одинаковы?

7
задан iammilind 12 October 2011 в 12:55
поделиться