亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么非const引用臨時對象?

為什么非const引用臨時對象?

C++
溫溫醬 2019-08-19 14:32:59
為什么非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改變?


查看完整回答
反對 回復 2019-08-19
?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

如果你有一個復制成本非常高的臨時對象,你可能更喜歡將一個const&對象(比如一個函數返回)取而代之,而不是將它復制到另一個變量中以便以后使用。只要引用存在,對臨時的持續引用會延長該臨時的生命,允許您訪問任何可讀狀態。

寫入是不允許的,因為只要你想改變一個變量,你也可以擁有一個真實的實例而不是一個僅作為非const引用別名的臨時實例。


查看完整回答
反對 回復 2019-08-19
  • 3 回答
  • 0 關注
  • 504 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號