為什么非const引用臨時對象?C ++只允許將臨時對象分配給const引用。它不允許分配臨時對象來引用。例如:String& a = String("test"); // Errorconst String& a = String("test"); // Ok無論我到哪里谷歌這個結果,我只看到以下答案修改臨時對象會導致無法識別的問題修改臨時對象很危險在某些時候,你會忘記它是一個臨時變量有人說,臨時對象在聲明后消失了。所以你不應該修改它。如果C ++,如此熱衷于阻止修改臨時對象,它應該阻止讀取臨時對象嗎?如果臨時對象消失了,那么從那里讀取內容是沒有意義的嗎?權利可能發生的可能情況也可能涉及閱讀。那為什么它一直阻止寫入并允許讀取?請給我一個可靠的c ++代碼說明。請不要通過指出一些替代方案來偏離問題。請給我一個可靠的答案代碼,為什么const int&被允許,int&不允許用于臨時對象。一個說&&在那里..我的問題不同..另一個說,改變不會反映..改變也不會反映即使它也是const int&。例如:雙倍; Const int&i = a; 一個++; 不會影響我..
3 回答

料青山看我應如是
TA貢獻1772條經驗 獲得超8個贊
不允許引用臨時值的原始案例是函數參數。假設這是允許的:
void inc(double& x)
{ x += 0.1; }
int i = 0;
inc(i);
為什么不i改變?

墨色風雨
TA貢獻1853條經驗 獲得超6個贊
如果你有一個復制成本非常高的臨時對象,你可能更喜歡將一個const&
對象(比如一個函數返回)取而代之,而不是將它復制到另一個變量中以便以后使用。只要引用存在,對臨時的持續引用會延長該臨時的生命,允許您訪問任何可讀狀態。
寫入是不允許的,因為只要你想改變一個變量,你也可以擁有一個真實的實例而不是一個僅作為非const引用別名的臨時實例。
- 3 回答
- 0 關注
- 504 瀏覽
添加回答
舉報
0/150
提交
取消