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