【问题标题】:Return passed reference to object返回传递给对象的引用
【发布时间】:2013-12-12 21:29:21
【问题描述】:

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

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

【问题讨论】:

  • 什么都没有消失。你把他们给你的东西还给他们。一直为类提供输出和输入支持时发生。

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


【解决方案1】:

这绝对没问题,实际上非成员操作符

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 非成员运算符
    猜你喜欢
    • 2011-08-15
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    相关资源
    最近更新 更多