我理解,为函数返回对局部变量的引用是未定义的,例如:
int& returnIntRef_One()
{
int value = 5;
return value;
}
但是,在这个函数中:
int& returnIntRef_Two()
{
int i = 5;
int &value =i;
return value;
}
该值似乎返回正常。
有人可以解释一下我的区别吗?
谢谢
答案 0 :(得分:1)
以任何方式访问悬空引用是未定义的行为。因此第二个例子也是未定义的行为。所以一切都会发生。它有时可能会工作,有时可能会崩溃,它可能不会崩溃,但可能会产生垃圾价值等。
简而言之,你不能认为它永远有效,因此你不能使用它。