| 如果您想要輸出一個物件的資料,例如一個自訂的Point物件中的x與y值,則您通常會這麼作: Point p1(10, 5);
cout << p1.x << ", " << p2.y << endl; 每一次若都要這麼撰寫程式碼,事實上也是很麻煩的,您可以重載 << 運算子,讓 << 擁有輸出物件資料的能力,例如使下面這段程式碼與上面的作用相同: Point p1(10, 5);
cout << p1 << endl; 要重載 << 運算子,其方法與重載其它運算子類似,其語法如下: ostream &operator<<(ostream &s, class-name ob) {
// 實作 return s; } 第一個參數是ostream型態的參數,也就是輸出串流,傳回這個串流給cout的話,就可以顯示輸出至串流中的資訊,第二個參數是要輸出的物件,實作時將指定輸出的資訊。 下面這個程式是個使用friend函式來重載 << 的範例: #include <iostream> 執行結果:
通常重載 << 運算子時,會使用friend函式,這是因為重載 << 函式時,它不是一個成員函式,理由在於 << 左邊不是物件,而是一個輸出串流,由於 << 函式不是成員函式,若要能存取資料成員,則該資料成員必須設定為public,使用friend函式來進行重載的話,則不用受此限制。 下面這個程式示範了不使用friend函式來重載,由於 << 函式不是成員函式,所以x與y必須宣告為public才可以: #include <iostream> 執行結果:
|