有元過載C 輸入輸出操作符(上篇)

2021-10-07 03:47:34 字數 1031 閱讀 9836

1.一般來說c++標準型別的資料不需要過載

2.使用者自己定義的型別的資料,如我們在c++裡面最常使用的類,如果在類中要使用是不能直接用「<<」和「>>」來輸出和輸入的。

如果想用它們輸出和輸入自己宣告的型別的資料,必須對它們過載。

過載輸出操作符 <<

《操作符的過載有兩種版本,詳細解釋見下篇

此處說明第二種版本使用

為了與標準庫io操作一致,過載 << 操作符函式應把ostream&作為其第乙個引數,對類型別const物件的引用作為第二個引數,並返回對ostream形參的引用。

friend ostream&

operator

<<

(ostream& os, date& day)

;

ostream &

operator

<<

(ostream &os,

const time &t)

注意

「<<」操作符應定義為非成員函式。因為對於類的成員函式,左運算元為該類型別的物件,這樣只能將第二個引數作為ostream&,使用時:

sales_item item;

item << cout;

這與「<<」的正常使用習慣相反。所以「<<」操作符應定義為非成員函式,並將其作為所操作類的友元。

過載輸入操作符

輸入操作符函式的第乙個形參為流的引用,第二個形參為類型別物件的引用(非const,因為 >> 的目的就是將資料讀入到該物件中)。

friend istream&

operator

>>

(istream& is, date& day)

;

因為過載《和》直接訪問類的私有成員,

所以只能將過載「>>」和「<<」的函式作為友元函式或普通的函式,而不能將它們定義為成員函式

c 學習 oop 過載輸入輸出操作符

date 11 03 21 18 55 description 過載輸入輸出操作符 輸出操作符 過載 非成員函式 友元函式 少做格式化 輸入操作符過載 過載 處理輸入操作的錯誤 include using namespace std class sales item sales item const...

小河學習日記 C 輸入輸出操作符過載

cout 是ostream 型別的物件 cin 是istream型別的物件 如果 運算子實現為成員函式,那麼呼叫者應該是ostream istream,而我們無權增加標準庫的 因此 輸入輸出運算子只能定義為全域性函式 cout 類物件 istream is,const point p 在過載操作符時...

C 友元過載輸出操作符(下篇)

假設trip是乙個time物件。為顯示time的值,可以使用show 函式,然而,如果可以像下面這樣操作更好 cout trip make cout recognize time class?解釋 是可以被過載的c 運算子之一。cout是乙個 ostream 物件,它是智慧型的,能夠識別所有的c 基...