輸入和輸出運算子過載

2021-08-20 22:09:24 字數 838 閱讀 2824

過載輸出運算子 <<

通常情況下,輸出運算子的第乙個形參是乙個非常量 ostream 物件的引用。之所以 ostream 是非常量是因為向流寫入內容會改變其狀態;而該形參是引用是因為我們無法直接複製乙個 ostream 物件。

第二個形參一般來說是乙個常量的引用,該常量是我們想要列印的類型別。

為了與其他輸出運算子保持一致,poerator<< 一般要返回它的 ostream 形參。

與 iostream 標準庫相容的輸入輸出運算子必須是普通的非成員函式,而不能是類的成員函式。否則,它們的左側運算物件將是我們的類的乙個物件。

demo demo;

demo << cout; //如果 operator<< 是 demo 的成員

io運算子一般被宣告為友元

示例**:

class demo

; friend ostream &operator

<< (ostream &os, const demo &demo);

private:

int id;

string name;

};ostream &operator

<< (ostream &os, const demo &demo)

void main()

過載輸入運算子

第乙個引數是運算子將要讀取的流的引用;

第二個引數是將要讀入到的(非常量)物件的引用

示例**:

istream &operator>> (istream &is, demo &demo)

輸入運算子和輸出運算子的過載

操作符的過載有一些規則 1.過載操作符必須具有乙個類型別或列舉型別運算元。這條規則強制過載操作符不能重新定義用於內建型別物件的操作符的含義。如 int operator int,int 不可以 2.為類設計過載操作符的時候,必須選擇是將操作符設定為類成員還是普通非成員函式。在某些情況下,程式沒有選擇...

過載輸入輸出運算子

我們平時可以用流 std cout str n 輸出 輸入字串和整型等內建型別的值。但是對於我們自定義的類,比如 student 類,卻不能直接通過 cout student 這樣的形式來輸出類的內容或給類賦值。怎麼辦呢?我們可以通過過載輸出 輸入運算子,讓自定義的類也支援這樣的操作。通常情況下,輸...

過載輸入輸出運算子

過載輸入輸出運算子 過載輸出運算子 第二個引數一般來說是乙個常量的引用,該常量是我們想要輸出的類型別。用引用是因為我們希望避免複製實參 用常量是因為通常列印物件的時候不需要改變物件的內容 輸出運算子應儘量減少格式化的操作,尤其是換行符,這樣有利於使用者對輸出格式的控制。一般會宣告為友元函式 frie...