我知道我们不能通过引用返回一个局部变量,因为它会超出范围。虽然我在返回传递的引用时有点困惑。例如,以下示例是合法的还是会导致未定义的行为?
classobject &function(classobject &obj) {
return obj;
}
答案 0 :(得分:6)
这绝对没问题,事实上非常常见的非会员运营商<<等实现,以允许您链接操作员。
要考虑的关键是对象生命周期,并且如您所知,对象通过引用传入,它必须比函数调用更长久。这样可以安全地返回相同的引用。
答案 1 :(得分:0)
这是合法的,例如由cout<<
使用(尽管参数是*this
而不是显式函数参数)。它返回cout
的引用,允许cout<<"a"<<"b";
。