我已閱讀,下面的代碼是有效的在C++ 11:這段代碼應該做什麼? (參照右值)
int && a = 3;
a = 4;
它是否應該寫入存儲器地址4,其中的數字文字3被存儲?也許一些編譯器優化可以防止這種情況發生,但它應該這樣做嗎?
我已閱讀,下面的代碼是有效的在C++ 11:這段代碼應該做什麼? (參照右值)
int && a = 3;
a = 4;
它是否應該寫入存儲器地址4,其中的數字文字3被存儲?也許一些編譯器優化可以防止這種情況發生,但它應該這樣做嗎?
當您將不是類類型的prvalue分配給右值引用時,會創建一個臨時對象並將引用綁定到該對象。您只是修改臨時對象。
輸入「CV1
T1
」的引用由類型「CV2T2
」的表達如下初始化:
如果參考是一個左值參考[...]
否則,或參考文獻應爲參考文獻。
如果初始化表達式
是一個x值(但不是一個位域),類prvalue,陣列prvalue或功能左值[...],或
具有類類型[...]
[...]
否則,創建類型爲「cv1
T1
」的臨時文件,並使用非引用複製初始化(8.5)的規則從初始化器表達式初始化。然後參考文件被綁定到臨時文件。
概念上講,prvalue僅僅是可以或不可以有來自在存儲器中的某些對象的值。文字在內存中沒有相應的對象,所以這個規則強制一個對象被創建。
你和我有一天在看這個。 :)不錯的巧合。 – GManNickG 2013-03-27 22:31:17
1.是和2. No. – 2013-03-27 11:35:31