C++重載<<和 >>

形式:ostream& operator<<(ostream& cout,const Point& p)
istream& operator>>(istream& cin,Point& p)

語法:

重載方式:只能使用友元函數(shù)重載 且 使用三個引用&

函數(shù)名:

輸出流:?operator<<(參數(shù)表)

輸入流:operator>>(參數(shù)表)

參數(shù)表:兩個參數(shù)均用引用&(這里需要注意)

輸出流:?必須是兩個參數(shù):對輸出流ostream&和 對象

第一個操作數(shù)cout,定義在文件iostream中,是標準類類型ostream的對象的引用。

如:ostream& cout,const Point& p

輸入流:必須是兩個參數(shù):對輸入流ostream&和 對象

第一個操作數(shù)是cin,定義在文件iostream,實際上是標準類類型istream的對象的引用

如:instream& cin,const Point& p

函數(shù)調(diào)用:

輸出流:?顯式調(diào)用:cout<<對象

隱式調(diào)用:?operator<<(cout,對象)

輸入流:顯式調(diào)用:cin>>對象

隱式調(diào)用:?operator>>(cin,對象)

返回類型:返回類型固定 + 使用返回函數(shù)引用(滿足連續(xù)輸出),之所以返回 istream(或ostream) 類對象的引用,是為了能夠連續(xù)讀?。ɑ蜉敵觯尨a書寫更加漂亮,例如:

(complex c1, c2; cin>>c1>>c2;)

或:cout<<a<<b;它等同于(cout<<a)<<b; (cout<<a)返回cout的引用,即就是它自己,它可以再次作為左值,因而能夠連著寫這個輸出流 。

若寫成ostream operator << (ostream& os, Point& pt);cout<<a<<b;相當于:(cout<<a)<<b;第一個()中返回cout的臨時變量,它不可以作為左值,因而錯誤。

輸出流:?返回ostream&

如:ostream& operator<<(ostream& cout,const Point& p)

輸入流:返回:istream&

如:istream& operator>>(istream& cin,Point& p)

注意:為什么輸入輸出操作符的重載必須使用友元函數(shù)?

因為:成員函數(shù)要求是有對象調(diào)用,則第一個參數(shù)必須是類的對象,但是<<和>>第一個參數(shù)是流的對象引用。故,不能使用成員函數(shù)

引用:http://blog.csdn.net/insistgogo/article/details/6626952

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • //出自51博客:www.Amanda0928.51.com 第一章 一、選擇題 1.B; (typedef ,t...
    Damongggggg閱讀 11,411評論 0 1
  • C++運算符重載-上篇 本章內(nèi)容:1. 運算符重載的概述2. 重載算術(shù)運算符3. 重載按位運算符和二元邏輯運算符4...
    Haley_2013閱讀 2,385評論 0 51
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,680評論 1 51
  • 一、重載(overload) 指函數(shù)名相同,但是它的參數(shù)表列個數(shù)或順序,類型不同。但是不能靠返回類型來判斷。 (1...
    Pitfalls閱讀 3,674評論 0 1
  • 文‖云飛揚 就在今夜 凝望你清澈如水的素顏 與你對望多時 心,已觸摸那萬里無云的悠藍 好想用初遇時的心 在目光如炬...
    山東云飛揚閱讀 141評論 2 2

友情鏈接更多精彩內(nèi)容