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