1樓:「已登出」
以下出自《The C++ Programing Language》
const左值引用和右值引用都可以繫結右值。
但是,兩者的目的從根本上是不同的:
· 我們用右值引用來實現「破壞性讀取」,以優化某些本來只能依靠拷貝的情況。
· 我們用const左值引用來阻止對引數的修改。
string
&&rr3
;//rr3引用乙個臨時物件,其內容是"Oxford"
const
string
cr1&
;//OK: 建立乙個臨時物件,並讓cr1繫結它
2樓:大衛德劉
按照我的理解,C++裡允許用右值來初始化乙個左值引用應該是為了解決這個問題:
classC;
voidf(
Cc);int
main
()在這裡觸發f的時候,會構造乙個臨時的C,然後複製這個臨時物件,浪費時間空間。
如果寫成
void f(const C &c);
那麼C就只會被構造一次。這裡加上const之後,語義是和原來一樣的,函式不會修改外部那個臨時C的值。
修改乙個右值是無意義的,很可能程式設計師的本意不是這樣,所以如果程式設計師想要把右值當做乙個左值引用來對待的話,必須自己寫出來。
void f(C &c);
void f(C &&c)
常量字串是右值,為什麼沒有呼叫相應的右值過載函式?
冒泡 誰告訴你字串常量不是左值啦,明明就是左值。字串常量的型別是const char N N是長度 含末尾 0 陣列嘛,const左值 現行標準下,兩種寫法是等效的。但是VS2010發布於2010年,右值引用的語義在那之後又有發展。VS2010支援的右值引用語義對應的是v2.0 N2844 這個提案...
顏值與能力有什麼關係?
張Sir 1,有的問題能力再強也解決不了,但顏值可以,這不單是能力高低的問題。2,有的問題顏值再高也解決不了,但能力可以,這不單是顏值高低的問題。3,能力和顏值都能解決的問題,顏值效果更好且會被人們容易給予更高的評價。這不單是顏值比能力重要的問題。綜上,顏值能解決的問題不要用能力去嫉妒,能力能解決的...
飲酒跟藝術有什麼關係?
小終 每個人的創作風格和習慣是不一樣的。大約每個詩人在創作的時候都要找到乙個合適的精神狀態吧。比如李白為代表的酒八仙 當然這裡不全是純粹的文人墨客 可能可以酒助其興。使其達到乙個較為舒適的狀態從而有利於創作。你要是讓苦吟的賈島一派詩人喝酒,我估計其醒過來就得罵街耽誤創作了。我看過一張相片,好像是馮驥...