należy rozważyć następujący kodoverloading Postfix oraz prefiks operatorów
#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;
}
tutaj jest realizowany dwie wersje operatorów Postfix oraz przedrostek Czytałem, że różnica jest wykonany przez wprowadzenie kolejnego tzw manekina argumentu, ale mam pytanie, czy widzimy deklarację tych
Digit& operator++();//prefix
Digit& operator--(); //prefix
Digit operator++(int);
Digit operator--(int);
one różniły od & znaku, więc dlaczego konieczne jest obojętne argumentem? a także w obu przypadkach na przykład ++ operator jest napisane przed argumentem i nie oznacza to, że są one podobnie?
Wyobrażam sobie, że w ramieniu lub gdzieś jest notacja, dlaczego ta metoda została wybrana do ujednoznacznienia. Odpowiedź jest prawdopodobnie tak prosta jak "nie było innej drogi". –