通常情況下,輸出運算子第乙個形參是乙個非常量ostream
物件的引用。之所以使用ostream
是非常量是因為向流寫入內容會改變其狀態;而形參是引用是因為無法直接複製乙個ostream
物件。
第二個形參一般來說是乙個常量的引用,該常量表示想要列印的類型別。採用引用可以避免複製實參;之所以是常量是因為通常情況下列印物件不會改變物件的內容。
operator<<
一般要返回它的ostream
形參。
ostream &operator<<(ostream&os,const sales_data &item)
輸入運算子必須處理輸入可能失敗的情況,而輸出運算子不需要。
執行輸入運算子時可能發生的錯誤:
程式中沒有逐個檢查讀取操作,而是在讀取完成後統一檢查:
if(is)
item.revenue = item.units_sold * price;
else
item = sales_data; //輸入失敗,物件被賦予預設狀態
當讀取操作發生錯誤時,輸入運算子應該負責從錯誤中恢復。 輸入和輸出運算子過載
過載輸出運算子 通常情況下,輸出運算子的第乙個形參是乙個非常量 ostream 物件的引用。之所以 ostream 是非常量是因為向流寫入內容會改變其狀態 而該形參是引用是因為我們無法直接複製乙個 ostream 物件。第二個形參一般來說是乙個常量的引用,該常量是我們想要列印的類型別。為了與其他輸出...
輸入運算子和輸出運算子的過載
操作符的過載有一些規則 1.過載操作符必須具有乙個類型別或列舉型別運算元。這條規則強制過載操作符不能重新定義用於內建型別物件的操作符的含義。如 int operator int,int 不可以 2.為類設計過載操作符的時候,必須選擇是將操作符設定為類成員還是普通非成員函式。在某些情況下,程式沒有選擇...
過載輸入輸出運算子
我們平時可以用流 std cout str n 輸出 輸入字串和整型等內建型別的值。但是對於我們自定義的類,比如 student 類,卻不能直接通過 cout student 這樣的形式來輸出類的內容或給類賦值。怎麼辦呢?我們可以通過過載輸出 輸入運算子,讓自定義的類也支援這樣的操作。通常情況下,輸...