第14章 過載操作符與轉換 2

2021-09-30 09:11:32 字數 1064 閱讀 1155

14.2 輸入和輸出操作符

支援i/o操作的類所提供的i/o操作介面,一般應該與標準庫iostream為內建型別定義的介面相同,因此,許多類都需要過載輸入和輸出操作符。

14.2.1 輸出操作符《的過載

為了與io標準庫一致,操作符應接受ostream&作為第乙個形參,對類型別const物件的引用作為第二個形參,並返回ostream形參的引用。

1. 輸出操作符

class class1

};ostream& operator<<(ostream& out, const class1& c)

class1 c1(200);

cout << c1 << endl;

return 0;

2.輸出操作符通常所做格式化應盡量少

一般而言,輸出操作符應輸出物件的內容,進行最小限度的格式化,它們不應該輸出換行符。

儘量減少操作符所做的格式化,讓使用者自己控制輸出細節。

3. io操作符必須為非成員函式

我們不能將該操作符定義為類的成員,否則,左運算元將只能是該類型別的物件。

相反,如果需要使用過載操作符為該型別提供io操作,就必須將它們定義為非成員函式。io操作符通常對非公用資料成員進行讀寫,因此,類通常將io操作符設為友元。

14.2 輸入操作符》的過載

輸入操作符的第乙個形參是乙個引用,指向它要讀的流,並且返回的也是對同乙個流的引用。它的第二個形參是對要讀入的物件的非const引用,該形參必須為非const,因為輸入操作符的目的是將資料讀到這個物件中。

更重要但通常重視不夠的是,輸入和輸出操作符有如下區別:輸入操作符必須處理錯誤和檔案結束的可能性。

1. 輸入操作符

friend istream& operator>>(istream& in, class1 &c);

istream& operator>>(istream& in, class1 &c)

設定輸入操作符時,如果可能,要確定錯誤恢復措施,這很重要。

第14章 過載操作符與轉換 1

14.1 過載操作符的定義 過載操作符是具有特殊名稱的函式 保留字operator後接需定義的操作符符號。像任何其他函式一樣,過載操作符具有返回型別和形參表。除了函式呼叫操作符之外,過載操作符的形引數目 包括成員函式的隱式this指標 與操作符的運算元目相同。函式呼叫操作符可以接受任意數目的運算元。...

第14章 過載操作符與轉換 8

14.9 轉換與類型別 14.9.1 轉換為什麼有用 1.支援混合型別表示式 2.轉換減少所需操作符的數目 14.9.2 轉換操作符 轉換操作符 conversion operator 是一種特殊的類成員函式。它定義將類型別值轉變為其他型別值的轉換。轉換操作符在類定義體內宣告,在保留字operato...

過載操作符與轉換

過載操作符函式 保留字operator後接需要定義的操作符號,有返回型別和形參表 不能過載的操作符有 不能通過連線其他合法符號來建立任何新的操作符 過載操作符必須具有乙個類型別運算元,以為如果只有內建型別物件的話,會重新定義原來的操作符 操作符的優先順序和結合性是固定的 不再具備短路求值特性 當運算...