C++ Primer 5th笔记(chap 14 重载运算和类型转换)输入和输出运算符
生活随笔
收集整理的這篇文章主要介紹了
C++ Primer 5th笔记(chap 14 重载运算和类型转换)输入和输出运算符
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 總說明
輸入輸出運算符必須是非成員函數,否則他們左側運算對象將是我們的類的一個對象,好比如下代碼:
Sales_data data; data << cout;- 由于IO操作通常需要讀寫類的非公有數據,所以輸入輸出運算符一般被聲明為友元。
- 輸入運算符必須處理輸入可能失敗的情況,而輸出運算符不需要。
2. 輸出運算符<<
參數說明:
- 第一個形參通常是一個非常量的ostream對象的引用。非常量是因為向流中寫入會改變其狀態;而引用是因為我們無法復制一個ostream對象。
- 第二個形參是要打印類型的常量引用
- 返回值是它的ostream形參。
eg.
ostream &operator<<(ostream &os,const Sales_data &item) {os<<item.isbn()<<" "<<item.units_sold<<""<<item.revenue<<" "<<item.avg_price();return os; }注意:輸出運算符應該主要負責打印對象的內容而非控制格式,輸出運算符不應該打印換行符。
3. 輸入運算符>>
參數說明:
- 第一個形參通常是運算符將要讀取的流的引用
- 第二個形參是將要讀取到的(非常量)對象的引用。
- 返回值是它的istream形參。
eg.
istream &opertaor>>(istream &is,Sales_data &item) {double price;// 不需要初始化,因為我們將先讀入數據到`price`,之后才使用它is>>item.bookNo>>iten.units_sold>>price;//檢查輸入是否成功if(is){item.revenue=item.units_sold*price;}else{item=Sales_data(); //輸入失敗:對象唄賦予默認的狀態}return is; }注意:
- 當流含有錯誤類型的數據時,讀取操作可能失敗,且之后的其他使用都將失敗
- 當讀取操作達到文件末尾或者遇到輸入流的其它錯誤時,也會失敗
- 當讀取操作發生錯誤時,輸入運算符應該負責從錯誤中恢復。
總結
以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 14 重载运算和类型转换)输入和输出运算符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ Primer 5th笔记(cha
- 下一篇: C++ Primer 5th笔记(cha