跟进.是否定义了返回引用x ++?

pat*_*ros 3 c++ return defined post-increment

我最近问的问题是返回x ++的行为; 界定?

结果是关于我的预期,但让我想到了类似的情况.

如果我要写

class Foo
{   
  ...   
  int x;   
  int& bar() { return x++; }
};
Run Code Online (Sandbox Code Playgroud)

bar现在返回int引用,是否定义了此行为?如果上一个问题的答案确实是真的,而不仅仅是对正在发生的事情的方便抽象,那么看起来你会返回一个堆栈变量的引用,一旦执行返回就会被销毁.

如果它只是一个抽象,我有兴趣知道后增量实际上保证了什么行为.

Tro*_*nic 5

不,你不能这样做,因为那将返回对临时的引用.

  • @John:这是真的,但是函数返回的东西(`x ++`的结果)*是临时的,因为它与`x`的(新)值不同. (3认同)