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