右值跟常量有什麼關係?

時間 2021-06-05 21:42:19

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,能力和顏值都能解決的問題,顏值效果更好且會被人們容易給予更高的評價。這不單是顏值比能力重要的問題。綜上,顏值能解決的問題不要用能力去嫉妒,能力能解決的...

飲酒跟藝術有什麼關係?

小終 每個人的創作風格和習慣是不一樣的。大約每個詩人在創作的時候都要找到乙個合適的精神狀態吧。比如李白為代表的酒八仙 當然這裡不全是純粹的文人墨客 可能可以酒助其興。使其達到乙個較為舒適的狀態從而有利於創作。你要是讓苦吟的賈島一派詩人喝酒,我估計其醒過來就得罵街耽誤創作了。我看過一張相片,好像是馮驥...