class student
{
private:
int age;
public:
student();
student(int a) {age = a;}
~student() {};
friend student& operator+ (int left, student& s);
friend ostream& operator<< (ostream& o, student& s);
}
...
student& operator + (int left, student& s)
{
s.age += left;
return s;
}
ostream& operator<< (ostream& o, student& s)
{
o << s.age << endl;
}
int main (void)
{
student a (10);
cout << 14 + a ;
return 0;
}
所以我必須從上面的代碼的兩個問題。重載運算符<<和operator +導致錯誤
你爲什麼要做
return s;
在operator+ (int left, student& s)
功能? 既然您已經通過student
對象引用了,爲什麼不能將返回類型設置爲void
?看來,當我把
endl
放在14 + a
之後,我發現一個錯誤,我發現一個錯誤並且它不打印。我知道這與'運營商< <'有關,但我不知道它的確切原因,以及如何防止這種情況發生?
'operator +'應該返回'student'而不是隨機修改它的參數。 – chris
*你用'endl'得到了什麼*錯誤? – ecatmur