当我在C++中为const引用分配临时int时会发生什么?

Ale*_*Dan 6 c++ return function

可能重复:
const引用是否延长了临时的寿命?

假设我有一个功能 f:

int f(int x){return x;}

const int &a=f(1);
Run Code Online (Sandbox Code Playgroud)

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

  1. 是否使参考const给f(1)一个长寿命?
  2. 如果是的话,哪里f(1)会被存储?
  3. 这是否意味着x当它超出范围时也没有被破坏?
  4. f(1)和之间有什么区别x

Ben*_*igt 8

你将表达式与值混淆了.

1)表达式返回的临时值f(1)的生命周期将延长其生命周期.此规则对于const引用而言是唯一的.

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

3)也许吧.这取决于编译器是复制x还是执行复制省略.由于类型int,它并不重要.

4)很多不同之处.一个是里面局部变量的名称int f(int).这是一个左值.另一个是调用int f(int)和评估rvalue 的表达式.