簡體   English   中英

從朋友函數返回局部變量的引用

[英]Returning reference of a local variable from a friend function

我遇到了一個在C ++中重載<<和>>運算符的示例。 但是,由於所有實現它的示例似乎都在返回對局部變量的引用,這引起了疑問

class Date  
{  
    int mo, da, yr;  
public:  
    Date(int m, int d, int y)  
    {  
        mo = m; da = d; yr = y;  
    }  
    friend ostream& operator<<(ostream& os, const Date& dt);  
};  

ostream& operator<<(ostream& os, const Date& dt)  
{  
    os << dt.mo << '/' << dt.da << '/' << dt.yr;  
    return os;  
}  

int main()  
{  
    Date dt(5, 6, 92);  
    cout << dt;  
}

我認為os是一個局部變量(如果不是,請更正我)。

我不知道此代碼是否真的有效,但是在網絡上的大多數參考文獻中,我都找到了類似的實現。

注意:故意省略包含頭文件和使用名稱空間std語句。

提前致謝。

我認為os是一個局部變量(如果不是,請更正我)。

不是真的 os是本地引用,是的。 但是它綁定到一個非本地對象。

並且由於它是非常量左值引用,因此必須將其綁定到壽命超過函數調用的對象。 因此,將該引用綁定到從函數返回的引用是完全可以的。 什么都不會懸而未決。

實際上,這是啟用函數的鏈式調用所必須執行的操作:

std::cout << foo << bar << baz;

只是一堆函數調用:

operator<<(operator<<(operator<<(std::cout, foo), bar), baz);

暫無
暫無

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

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