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

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

墨色風(fēng)雨
TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果你有一個(gè)復(fù)制成本非常高的臨時(shí)對(duì)象,你可能更喜歡將一個(gè)const&
對(duì)象(比如一個(gè)函數(shù)返回)取而代之,而不是將它復(fù)制到另一個(gè)變量中以便以后使用。只要引用存在,對(duì)臨時(shí)的持續(xù)引用會(huì)延長(zhǎng)該臨時(shí)的生命,允許您訪問(wèn)任何可讀狀態(tài)。
寫(xiě)入是不允許的,因?yàn)橹灰阆敫淖円粋€(gè)變量,你也可以擁有一個(gè)真實(shí)的實(shí)例而不是一個(gè)僅作為非const引用別名的臨時(shí)實(shí)例。
- 3 回答
- 0 關(guān)注
- 503 瀏覽
添加回答
舉報(bào)
0/150
提交
取消