ここにコード過負荷を後置し、接頭辞オペレーター
#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;
}
を以下の点を考慮してください接尾とプレフィックス演算子の2つのバージョンが実装されて、私は読んだことがその差は別の、いわゆる仮引数を導入することによって行われるが、場合、私は疑問を持っています私たちは、++演算子は、引数の前に書かれており、それは彼らがあることを意味しません。例えば、なぜそれが必要な仮引数のですか?そしてまた、両方の場合には、それらは&マークによって異なっているこれらの
Digit& operator++();//prefix
Digit& operator--(); //prefix
Digit operator++(int);
Digit operator--(int);
の宣言を参照してください同じ?
私は、曖昧さ回避のために選択された方法である理由について、腕またはどこかに表記があると想像します。答えは、おそらく "他の方法はありませんでした"という単純なものです。 –