我为我的大学作业写了一个理性的课程。
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