寿命延长从函数返回引用

lifetime extension returning reference from function

本文关键字:函数 返回 引用      更新时间:2023-10-16

以下 UB (未定义的行为(吗?value现在悬而未决并且编译器/语言规则没有延长生命周期,这真的是一个"太多"级别吗?

const int &get_value(const int &value) { return value; };
int main()
{
const auto &value = get_value(5);
printf("Value is: %d", value);
}

是的,这是 UB。当通过5传递到get_value()时,会创建一个临时对象,并将引用const函数参数绑定到它value。由于,绑定到函数参数的临时对象value,它将一直持续到包含调用的完整表达式完成。在main()中,你正在取消引用一个不绑定到生物对象的引用,这是未定义的巴哈维。