這是我的代碼。這運行,但它給我一個錯誤,當我從ostream &運營商< <刪除常量。爲什麼?爲什麼運算符<<需要const?
作爲一個側面問題,顯示的錯誤消息是:不能將'std :: ostream {aka std :: basic_ostream}'左值綁定到'std :: basic_ostream & &'。這是如何表明我錯過了一個const?
#include <iostream>
using namespace std;
class pair_int{
public:
int x;
int y;
pair_int(int x, int y):x(x),y(y){};
friend ostream& operator<< (ostream & s, pair_int & c);
};
ostream& operator<<(ostream & s, const pair_int & c){
s << c.x;
s << ",";
s << c.y;
return s;
}
pair_int square(int x){
return pair_int(x, x*x);
}
int main(int argc,char * argv []){
int x;
cin >> x;
cout << square(x);
return 0;
}
1.4.3的對象不應該改變的對象的內容,因此,對象正在輸出是恆定的或'const'。 –
否則您無法通過臨時實例嗎? –
請參閱http://stackoverflow.com/questions/1565600/how-come-a-non-const-reference-cannot-bind-to-a-temporary-object – juanchopanza