我想打印出一個用戶定義類型的對象,這樣cout << ob1;
所以我想重載操作< <,我想按值而不是按引用返回,但它給了我一個錯誤:在兩個文件命名爲: iosfwd和 ios_base.h爲什麼運算符<<重載必須通過引用返回?
ostream operator<<(ostream& out, cat& rhs){
out << rhs.a << ", " << rhs.b << endl;
return out ;
}
1)它是因爲它不能創建一個新的ostream對象,這就是爲什麼它有參考返回?
但是當我引用返回是這樣的:
ostream& operator<<(ostream& out, cat& rhs){
out << rhs.a << ", " << rhs.b << endl;
return out ;
}
它工作正常。
2)有沒有解釋?
你會得到什麼錯誤信息? – orlp 2012-03-10 13:42:47
另外,你爲什麼要按價值回報? – 2012-03-10 13:48:28
一個方面說明,在你的操作符中使用endl會輸出你的類型(意外地)刷新iostream。你可能想跳過它,或者如果你真的想輸出到幾行,輸出'\ n'。 – 2012-03-10 13:54:20