在 C++ 中将临时 int 分配给 const 引用时会发生什么? [重复]

问题描述 投票:0回答:2

可能重复:
常量引用类成员是否会延长临时变量的寿命?

假设我有一个函数

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
    有什么区别?
c++ function return
2个回答
8
投票

您将表达式与值混淆了。

1) 表达式

f(1)
返回的临时值的生命周期将延长。此规则对于
const
参考文献来说是唯一的。

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

3)也许吧。这取决于编译器是复制

x
还是执行复制省略。由于类型是
int
,所以没关系。

4)有很多差异。一个是

int f(int)
内部的局部变量的名称。它是一个左值。另一个是调用
int f(int)
并求值为右值的表达式。


3
投票

将临时对象绑定到

const&
可将临时对象的生命周期延长到引用的生命周期。

© www.soinside.com 2019 - 2024. All rights reserved.