返回一个Ref到一个局部变量

Returning a Ref to a local variable

本文关键字:一个 局部变量 Ref 返回      更新时间:2023-10-16

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

int& returnIntRef_One()
{
    int value = 5;
    return value;
}

但是,在这个函数中:

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

返回值似乎很好。

谁能给我解释一下有什么不同吗?

谢谢

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

简而言之,你不能认为它总是有效的,因此你不能使用它。