繁体   English   中英

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

[英]Follow-up. Is return reference to x++ defined?

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

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

如果我要写

class Foo
{   
  ...   
  int x;   
  int& bar() { return x++; }
};

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

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

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

您的代码将导致compilation error 但是,如果将后增量更改为预增量,则可以正常工作。 x的值递增,然后返回对此修改的x的引用。

当前代码的问题在于您正在尝试修改临时代码,因为它们是临时对象,所以不允许这样做。

这篇关于rvalue引用的Visual C ++博客文章

... C ++不希望你不小心修改临时...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM