【问题标题】:Returning a Ref to a local variable [duplicate]将 Ref 返回到局部变量 [重复]
【发布时间】:2016-09-27 08:52:29
【问题描述】:

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

int& returnIntRef_One()
{
    int value = 5;

    return value;

}

但是,在这个函数中:

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

    return value;
}

该值似乎返回正常。

谁能解释一下有什么区别?

谢谢

【问题讨论】:

  • 未定义的行为
  • 两个sn-ps是相等的,第二个只是给编译器增加了一些提示
  • “将 Ref 返回给局部变量”... 是不行的,除非该变量已声明为 static

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


【解决方案1】:

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

简而言之,你不能假设它会一直工作,因此你不能使用它。

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 2016-01-19
    • 2021-04-28
    • 2015-08-11
    • 1970-01-01
    相关资源
    最近更新 更多