将Ref返回给局部变量

时间:2016-09-27 08:52:29

标签: c++ reference pass-by-reference

我理解,为函数返回对局部变量的引用是未定义的,例如:

int& returnIntRef_One()
{
    int value = 5;

    return value;

}

但是,在这个函数中:

int& returnIntRef_Two()
{
    int i = 5;
    int &value =i;

    return value;
}

该值似乎返回正常。

有人可以解释一下我的区别吗?

谢谢

1 个答案:

答案 0 :(得分:1)

以任何方式访问悬空引用是未定义的行为。因此第二个例子也是未定义的行为。所以一切都会发生。它有时可能会工作,有时可能会崩溃,它可能不会崩溃,但可能会产生垃圾价值等。

简而言之,你不能认为它永远有效,因此你不能使用它。