簡體   English   中英

何時通過引用傳遞並返回c ++中的函數

[英]when to pass and return by reference to a function in c++

首先,我在c ++中創建了一個復雜的類,它有兩個成員數據--real和imaginary。(形式為a + ib)。 當我試圖為復雜類對象重載<<運算符如下 -

friend ostream operator<<(ostream ,complex );  in .h file

ostream operator <<(ostream o,complex c){

    o<<"real part"<<c.real;
    o<<"imaginary part<<c.imaginary;
    return o;

}  

在.cpp文件中,它不起作用,而是打開一個ios_base文件並在那里顯示錯誤。 但是當我通過引用傳遞並通過引用返回如下時,相同的代碼會完美地重載<<

ostream& operator <<(ostream& o,complex& c)
{



      //same as before
};

我不明白通過引用傳遞和返回有什么幫助?

std :: ostream不可復制的類型。 您不能復制o ,因此您必須通過引用收到它並通過引用將其返回。

使用引用與不使用引用的規則很簡單:如果要使用與調用者中相同的對象,請通過引用傳遞它; 如果要復制正在傳遞的對象,請不要使用引用。

在某些情況下,您只能通過引用傳遞對象。 具體來說,當復制對象不正確時,其類的設計者可以禁止復制。 表示輸入/輸出和同步資源的對象通常是不可復制的,這意味着您必須通過引用或指針傳遞它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM