第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

什么是右值,左值,x值,glvalues和prvalues?

什么是右值,左值,x值,glvalues和prvalues?

浮云間 2019-05-27 16:09:28
什么是右值,左值,x值,glvalues和prvalues?在C ++ 03中,表達式是rvalue或lvalue。在C ++ 11中,表達式可以是:右值左值x值glvalueprvalue兩類已成為五大類。這些新的表達類別是什么?這些新類別如何與現(xiàn)有的左值和左值類別相關(guān)聯(lián)?C ++ 0x中的右值和左值類別是否與它們在C ++ 03中的相同?為什么需要這些新類別?是WG21神只是想迷惑我們凡人?
查看完整描述

3 回答

?
當(dāng)年話下

TA貢獻1890條經(jīng)驗 獲得超9個贊

這些新的表達類別是什么?

FCD(n3092)具有優(yōu)異的描述:

- 左值(所謂的歷史,因為左值可能出現(xiàn)在賦值表達式的左側(cè))指定一個函數(shù)或一個對象。[示例:如果E是指針類型的表達式,則* E是指向E指向的對象或函數(shù)的左值表達式。另一個例子,調(diào)用返回類型為左值引用的函數(shù)的結(jié)果是左值。 - 末端的例子]

- xvalue(“eXpiring”值)也指對象,通常接近其生命周期的末尾(例如,可以移動其資源)。xvalue是涉及rvalue引用的某些表達式的結(jié)果(8.3.2)。[示例:調(diào)用返回類型為右值引用的函數(shù)的結(jié)果是xvalue。 - 末端的例子]

- glvalue(“廣義”左值)是左值或x值。

- rvalue(歷史上所謂的,因為rvalues可能出現(xiàn)在賦值表達式的右側(cè))是xvalue,臨時對象(12.2)或其子對象,或者是與對象無關(guān)的值。

- prvalue(“純”rvalue)是一個不是xvalue的rvalue。[示例:調(diào)用返回類型不是引用的函數(shù)的結(jié)果是prvalue。諸如12,7.3e5或true之類的文字的值也是prvalue。 - 末端的例子]

每個表達式都屬于此分類法中的基本分類之一:lvalue,xvalue或prvalue。表達式的此屬性稱為其值類別。[注意:第5章中對每個內(nèi)置運算符的討論表明了它產(chǎn)生的值的類別以及它所期望的操作數(shù)的值類別。例如,內(nèi)置賦值運算符期望左操作數(shù)是左值,右操作數(shù)是prvalue并產(chǎn)生左值作為結(jié)果。用戶定義的運算符是函數(shù),它們期望和產(chǎn)生的值的類別由它們的參數(shù)和返回類型決定。 - 注意

我建議你閱讀3.10 Lvalues和rvalues的整個部分。

這些新類別如何與現(xiàn)有的左值和左值類別相關(guān)聯(lián)?

再次:


C ++ 0x中的右值和左值類別是否與它們在C ++ 03中的相同?

rvalues的語義特別隨著移動語義的引入而發(fā)展。

為什么需要這些新類別?

因此可以定義和支持移動構(gòu)造/分配。


查看完整回答
反對 回復(fù) 2019-05-27
?
四季花海

TA貢獻1811條經(jīng)驗 獲得超5個贊

我將從你的上一個問題開始:


為什么需要這些新類別?


C ++標(biāo)準包含許多處理表達式的值類別的規(guī)則。一些規(guī)則區(qū)分左值和右值。例如,當(dāng)涉及到重載決策時。其他規(guī)則區(qū)分glvalue和prvalue。例如,您可以使用不完整或抽象類型的glvalue,但沒有不完整或抽象類型的prvalue。在我們使用這個術(shù)語之前,實際需要區(qū)分glvalue / prvalue的規(guī)則是指lvalue / rvalue和它們無意中是錯誤的還是包含了很多解釋和例外的規(guī)則......“除非rvalue是由于未命名右值參考......“。因此,將glvalues和prvalues的概念作為自己的名稱似乎是一個好主意。


這些新的表達類別是什么?這些新類別如何與現(xiàn)有的左值和左值類別相關(guān)聯(lián)?


我們?nèi)匀挥信cC ++ 98兼容的術(shù)語lvalue和rvalue。我們只是將rvalues分成兩個子組,xvalues和prvalues,我們將lvalues和xvalues稱為glvalues。Xvalues是未命名的右值引用的一種新值類別。每個表達式都是以下三個中的一個:左值,右值,右值。維恩圖看起來像這樣:


    ______ ______

   /      X      \

  /      / \      \

 |   l  | x |  pr  |

  \      \ /      /

   \______X______/

       gl    r

功能示例:


int   prvalue();

int&  lvalue();

int&& xvalue();

但也不要忘記命名的右值引用是左值:


void foo(int&& t) {

  // t is initialized with an rvalue expression

  // but is actually an lvalue expression itself

}


查看完整回答
反對 回復(fù) 2019-05-27
  • 3 回答
  • 0 關(guān)注
  • 1050 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號