簡體   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