返回传递对象的引用

时间:2013-12-12 21:29:22

标签: c++ scope pass-by-reference object-lifetime

我知道我们不能通过引用返回一个局部变量,因为它会超出范围。虽然我在返回传递的引用时有点困惑。例如,以下示例是合法的还是会导致未定义的行为?

classobject &function(classobject &obj) {
 return obj;
}

2 个答案:

答案 0 :(得分:6)

这绝对没问题,事实上非常常见的非会员运营商<<等实现,以允许您链接操作员。

要考虑的关键是对象生命周期,并且如您所知,对象通过引用传入,它必须比函数调用更长久。这样可以安全地返回相同的引用。

答案 1 :(得分:0)

这是合法的,例如由cout<<使用(尽管参数是*this而不是显式函数参数)。它返回cout的引用,允许cout<<"a"<<"b";