當然,這不會編譯:文字數字是否可變?
int &z = 3; // error: invalid initialization of non-const reference ....
,這將編譯:
const int &z = 3; // OK
現在考慮:
const int y = 3;
int && yrr = y; // const error (as you would expect)
int && yrr = move(y); // const error (as you would expect)
但這些下一行做編譯我。我認爲它不應該。
int && w = 3;
int && yrr = move(3);
void bar(int && x) {x = 10;}
bar(3);
那最後兩行是不是允許文字3被修改? 3
和const int有什麼區別?最後,「修改」文字有沒有危險?
(克++ - 4.6(GCC)4.6.2 -std=gnu++0x -Wall -Wextra
)
回答我自己的問題:在'move(3)'也許3先被複制來創建一個臨時int將在語句結束時被銷燬。這是解釋嗎? – 2011-12-22 01:37:50
在你的第二條語句中:const &z = 3;你缺少類型說明符。所以它不會編譯。 – 2011-12-22 01:38:24
謝謝@CJohnson,我通常在這裏複製並粘貼工作代碼。但是我對那一班班輪粗心大意! – 2011-12-22 01:39:24