日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ Primer 5th笔记(chap 14 重载运算和类型转换)输入和输出运算符

發布時間:2025/3/21 c/c++ 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 重载运算和类型转换)输入和输出运算符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。