1. 程式人生 > >【c++】c++中重載輸出操作符,為什麽要返回引用

【c++】c++中重載輸出操作符,為什麽要返回引用

不返回 定義 類型 AS 標準 操作符 連續 新的 輸出

針對:ostream & operator <<(ostream & os, const ClassType &object)

說明幾點: 1.第一個形參為對ostream對象的引用,在該對象上將產生輸出,ostream為非const,因為寫入到流會改變流的狀態;該形參是一個引用,因為不能復制ostream對象(在c++中定義的標準輸入輸出流類istream和ostream,其中拷貝構造函數和賦值操作符函數都被放置在了private部分,且只有聲明,沒有定義)。
2.第二個形參一般應是對要輸出的類類型的引用,該形參是一個引用以避免復制實參,減少一次拷貝;它設為const,因為輸出一般不會改變該對象,設為const就可以用來輸出const對象和非const對象。 3.返回類型是一個ostream引用,它的值通常是輸出操作符所操作的ostream對象,首先因為ostream對象不能復制,所以必須是引用;其次引用可以少一次拷貝,提高效率;最後,為了體現連續性,實現連續輸出,達到用多個輸出操作符操作一個ostream對象的效果,如果不是引用,程序返回的時候就會生成新的臨時對象,也就是說,連續的兩個<<操作符實際上是針對不同對象的,這就好比cout<<a<<b;與cout<<a;cout<<b;的區別。 PS: 重載賦值操作符,連續賦值可以不返回引用 重載加法操作符,連續相加不能返回引用

【c++】c++中重載輸出操作符,為什麽要返回引用