当我在C++中将临时int赋值给const引用时会发生什么

What happens when I assign a temporary int to a const reference in C++?

本文关键字:const 引用 什么 赋值 int C++      更新时间:2023-10-16

可能重复:
const引用会延长临时引用的寿命吗?

假设我有一个函数f:

int f(int x){return x;}
const int &a=f(1);

我知道f(1)只是暂时的,我会在这个声明之后被销毁,但

  1. 使引用const会使f(1)有很长的寿命吗
  2. 如果是,f(1)将存储在哪里
  3. 这是否意味着x在超出范围时也没有被销毁
  4. f(1)x之间有什么区别

您混淆了表达式和值。

1) 表达式f(1)返回的临时值的生存期将延长。此规则对于const引用是唯一的。

2) 编译器想要的任何位置,但可能在堆栈上。

3) 也许吧。这取决于编译器是复制了x还是执行了复制省略。由于类型为int,因此无所谓。

4) 有很多不同。一个是int f(int)内部的局部变量的名称。它是一个左值。另一个是调用int f(int)并计算为右值的表达式。

将临时对象绑定到const&会将临时对象的生存期延长到引用的生存期。