私は大学の宿題のために合理的なクラスを書きました。
class Rational
{
friend std::istream &operator >>(std::istream &, const Rational &);
friend std::ostream &operator <<(std::ostream &, const Rational &);
public:
...
private:
int numerator;
int denominator;
}
istream &operator >>(istream &istm, const Rational &num){
istm>>num.numerator>>num.denominator;
return istm;
}
ただし >> オーバーロード関数は無限にループしているようです。それからコアダンプ...
偶然、Ratoinal &num に "const" を追加したことがすぐにわかりました。
私の質問はなぜですか
istm>>num.numerator>>num.denominator;
コンパイルは成功するが無限ループになる?
次の結果を説明してください...ありがとう
const int i;
cin>>i; //compile error
int c;
const int &a=c;
cin>>a; //pass