首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过引用临时传递函数的寿命

通过引用临时传递函数的寿命
EN

Stack Overflow用户
提问于 2015-05-29 00:15:16
回答 2查看 200关注 0票数 5

我可以这样做:

代码语言:javascript
复制
const int &i = 5;

并将临时生命期延长到i的生存期。

但你觉得

代码语言:javascript
复制
const int &fun (const int &i){
    return i;
}

int main () {
    const int &r = fun(5);
    // Can I use r here?
}

代理-5的生存期还在延长吗?或者r是一个悬空的引用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-29 00:17:10

这是个悬空的参考资料。临时/4-5级:

有两种情况下,时间被摧毁在一个不同的点,而不是完全表达式的结尾。第一个上下文是在调用默认构造函数时. 第二个上下文是将引用绑定到临时上下文。引用绑定到的临时对象或作为引用绑定的子对象的完整对象的临时对象在引用的生存期内持续存在,但以下情况除外:

  • 一个临时绑定到构造函数的ctor初始化器中的引用成员.
  • 绑定到函数调用(5.2.2)中的引用参数的临时绑定将保持,直到包含调用的完整表达式完成为止。
  • ..。

5一直保持到包含调用的完整表达式完成为止,也就是说:

代码语言:javascript
复制
const int &r = fun(5);
// <== no more 5
票数 6
EN

Stack Overflow用户

发布于 2015-05-29 00:16:45

不,我不这么认为。您将5绑定到指向fun的参数的引用,因此只要该参数持续很长时间,它就会持续。该参数仅在调用fun的持续时间内持续。

this previous question中对相关的标准文本进行了探讨。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30519148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档