過載之過載流插入和流提取運算子

2021-07-11 13:27:33 字數 1542 閱讀 5963

c++的流插入運算子「<<」和流提取運算子「>>」是c++在類庫中提供的,所有c++編譯系統都在類庫中提供輸入流類istream和輸出流類ostream。cin和cout分別是istream類和ostream類的物件。在類庫提供的標頭檔案中已經對「<<」和「>>」進行了過載,使之作為流插入運算子和流提取運算子,能用來輸出和輸入c++標準型別的資料。因此,凡是用「cout<<」和「cin>>」對標準型別資料進行輸入輸出的,都要用#include 把頭檔案包含到本程式檔案中。

使用者自己定義的型別的資料,是不能直接用「<<」和「>>」來輸出和輸入的。如果想用它們輸出和輸入自己宣告的型別的資料,必須對它們過載。

對「<<」和「>>」過載的函式形式如下:

istream & operator >> (istream &, 自定義類 &);

ostream & operator << (ostream &, 自定義類 &);

即過載運算子「>>」的函式的第乙個引數和函式的型別都必須是istream&型別,第二個引數是要進行輸入操作的類。過載「<<」的函式的第乙個引數和函式的型別都必須是ostream&型別,第二個引數是要進行輸出操作的類。因此,只能將過載「>>」和「<<」的函式作為友元函式或普通的函式,而不能將它們定義為成員函式。(至於為什麼要宣告為友元函式而非成員函式,是因為類的成員二元運算子過載要求運算子左運算元為運算子函式的第乙個引數,而流類庫中的》則要求第乙個引數為ostream的引用,所以不能作為類成員,只能作為友元.

可能比較難理解,應用時知道把它過載為友元就可以了)

下面我們使用一具體例項來說明過載流提取和流插入運算子

例:將兩個時間相加

#includeusing namespace std;

class time

time(int h,int m,int s):hour(h),minute(m),sec(s){}

time(const time &);

friend istream &operator >>(istream &,time &);

friend ostream &operator <<(ostream &,time &);

time operator + (time &);

private:

int hour;

int minute;

int sec;

};time::time (const time &t)

time time::operator +(time &t)

} if(t1.minute>=60)

if(t1.hour>=24)

return t1;

}istream &operator >>(istream &input,time &t)

ostream &operator <<(ostream &output,time &t)

為過載流插入函式目的是輸入我們所需要的資料。給程式帶來了方便

ostream &operator <<(ostream &output,time &t)

{ cout<

且兩個函式都為友元函式。

過載流插入運算子《和流提取運算子》

includeclass complex complex double r,double i complex operator complex c2 friend ostream operator ostream output,complex c private double real double...

過載流插入運算子和流提取運算子

有兩個矩陣a和b,均為2行3列。求兩個矩陣之和。過載運算子 使之能用與矩陣相加,如c a b。過載流插入運算子 和流提取運算子 使之能用與該矩陣的輸入和輸出,如cin a,cout 我是剛學習c de菜鳥 源 如下 include using namespace std class matrix m...

過載「流提取運算子 」

過載 流提取運算子 作為計算機專業的同學來說,了解計算機的原理的是很有必要的。插入運算流,該運算子在istream 輸入流類中 提取運算流,該運算子在ostream 輸出流類中 對 過載的函式形式如下 istream operator istream 自定義類 ostream opreator os...