[英]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.