我最近問的問題Is the behavior of return x++; defined?後續。是否定義了對x ++的返回引用?
結果是關於我的預期,但讓我考慮類似的情況。
如果我寫
class Foo
{
...
int x;
int& bar() { return x++; }
};
哪裏欄現在返回一個int參考,定義這種行爲?如果對上一個問題的回答是真實的,而不僅僅是方便的抽象,那麼看起來你會返回一個對一個棧變量的引用,一旦執行返回就會被銷燬。
如果它只是一個抽象,我很想知道後增量實際保證了什麼行爲。
INT x是一個成員變量,而不是一個臨時 – 2010-03-06 02:05:26
@約翰:這是真的,但事情的函數返回(結果'X ++')*是*臨時,因爲它不同於'x'的(新)值。 – 2010-03-06 02:10:17
from gcc:foo.h:6:在成員函數「int&Foo :: bar()」中:錯誤:從類型「int」的臨時類型的非int類型的非const引用的無效初始化。 (這是一個臨時的) – jakebman 2010-03-06 02:39:23