c++ 右值左值
左值右值
名詞
左值:lvalue,left value
右值:rvalue,right value
C語言
這兩個名詞是從C語言繼承過來的,C語言中為了幫助記憶:左值可以出現在賦值語句的左側,右值則不能。
C++
-
在C++語言中,二者的區別就沒那麼簡單了。C++的表示式要不然就是左值,要不然就是右值,不存在黑戶。
-
一個左值表示式的求值結果是一個物件或者一個函式,然而以常量物件為代表的某些左值實際上不能作為賦值語句的左側運算物件。此外,雖然某些表示式的求值結果是物件,但它們是右值而非左值。
-
可以做一個簡單的歸納:當一個物件被用作右值的時候,用的是物件的值(內容),當物件被用作左值的時候,用的是物件的身份(在記憶體中的位置)。
-
知乎看到的經典總結:左值右值的形式區分(或者稱語法區分)是能否用取地址&運算子;語義區分(即其本質涵義)在於表示式代表的是持久物件還是臨時物件。
相關推薦
c++ 右值左值
左值右值 名詞 左值:lvalue,left value 右值:rvalue,right value C語言 這兩個名詞是從C語言繼承過來的,C語言中為了幫助記憶:左值可以出現在賦值語句的左側,右值則不能。 C++ 在C++語言中,二者的區別就沒那麼簡單了。C++的表示式要不然就是左值,
c++中的左值與右值
http://www.cnblogs.com/catch/p/3500678.html 左值 (lvalue)和右值 (rvalue) 是 c/c++ 中一個比較晦澀基礎的概念,有的人可能甚至沒有聽過,但這個概念到了 c++11 後卻變得十分重要,它們是理解 move,
C++11:左值引用與右值引用
C++11:左值引用與右值引用 在 C++11 的新標準中,出現了「右值引用」的說法,既然有了右值引用,那麼傳統的引用也就叫做左值引用。 右值引用 (Rvalue Referene) 是 C++ 新標準 (C++11, 11 代表 2011 年 ) 中引入的新特性 , 它實現了轉
C++中的左值和右值
左值和右值的定義 在C++中,可以放到賦值操作符=左邊的是左值,可以放到賦值操作符右邊的是右值。有些變數既可以當左值又可以當右值。進一步來講,左值為Lvalue,其實L代表Location,表示在記憶
C++引用(左值引用,右值引用)
特點: 引用:引用本質指標實現。 引用一旦初始化, 不會引用其他變數。 右值引用目的:快速建立暫存器資料的引用,就是還沒有記憶體實體的資料可以立即建立一個引用。 (一般寫模板函式有一個左值引用的模板函式,都會對應一個右值引用的模板函式,即使實現程式碼是相同的。
C語言 左值、右值
16px 不能 操作 b- 存在 text 記錄 右值 i++ 左值就是在賦值中可以放在賦值操作符兩邊的值 右值則是只可以放在賦值操作符右邊的值 ++i是直接給i變量加1,然後返回i本身,因為i是變量,所以可以被賦值,因此是左值表達式i++現產生一個臨時變量,記錄i的值,而
C++左值引用和右值引用
分配內存 右值 markdown type 提高 指向 區分 基本語法 down 1.左值和右值概念: 左值是可以放在賦值號左邊可以被賦值的值:左值就是指在表達式使用完之後仍存在的對象(存儲空間); 右值當在賦值號右邊去除值賦給其他變量的值:右值可以在內存也可以在CPU寄存
[轉載][C++]C++11 左值、右值、右值引用詳解
找到 延長 引用 () 字面量 別名 賦值 例子 左值 我之前以為左值就是等號左邊的值,右值就是等號右邊的值。 我 太天真 ?_? 原文地址:https://blog.csdn.net/hyman_yx/article/details/52044632 (侵刪 ------
C++11 左值 右值
在C++11中所有的值必屬於左值、右值兩者之一。 C++98左值(lvalue),可以放在賦值運算子=左邊的變數或者表示式,有名字,可以取地址。右值(rvalue),臨時變數值(非引用返回的函式返回值、表示式等)或者不跟物件關聯的字面量值(注意:字串字面值是左值,唯一例外),沒有名字,不能取
C++ 判斷左值和右值 (使用程式碼判斷)
C++的左值和右值的概率繼承自C語言裡。C++11之後引入右值。 左值和右值的根本區別就是左值可以使用&取地址,而右值是不可以取地址的。還有一點就是,右值是可以賦值給左值,但是反過來就不行,即左值不能賦值給右值。通俗的講,就是左值在=左邊,右值在右邊。 其實我們如果在判斷左值和右
C++11 左值、右值、右值引用詳解(轉載)
左值、右值 在C++11中所有的值必屬於左值、右值兩者之一,右值又可以細分為純右值、將亡值。在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、沒有名字的就是右值(將亡值或純右值)。舉個例子,int a = b+c, a 就是左值,其有變數名為a,通過&a
C++中讓人忽視的左值和右值
前言 為了瞭解C++11的新特性右值引用,不得不重新認識一下左右值。學習之初,最快的理解,莫過於望文生義了,右值那就是賦值號右邊的值,左值就是賦值號左邊的值。在中學的數學的學習中,我們理解的是,左值等價於等號左邊的值,右值等價於等號右邊的值;當我們繼續學習C語言時,等號=不再叫等號,蓋頭換面叫做
關於 *p++ 分別作為左值,右值,左右值的操作(C/C++)
關於 *p++ (C/C++) 目錄 關於 *p++ (C/C++) 目錄 作為左值 作為右值 同時作為左值和右值 作為左值
C++進階--理解左值和右值
/* * 理解左值和右值 * * * 為什麼要關心這個? * 1. 有助於理解C++結構,搞明白編譯器的錯誤和警告 * 2. C++ 11中引入了右值引用,理解左值右值是前提 * */ /* * 簡單的定義: * * 左值 - 在記憶體中具有可標識位置的物件 * 右值 - 任何不是
c/c++左值與右值
宣告:本文轉自 http://blog.csdn.net/qikaibinglan/article/details/6203483 左值就是在賦值中可以放在賦值操作符兩邊的值,比如: int a = 1; double b = 2.0 a = b; b = a
左值、右值與右值引用 & C++11中
我們先來談談C++11中對左右值的判斷標準,以及左右值本身的一些細節,我想這應該是故事的開始。 在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、沒有名字的就是右值。 舉個例子:在a=b+c;中,&a是允許的操作,但&(b+c)這樣的操
C++左值右值和移動語義
最近看了很多相關部落格,自己總結一下,單純根據在等號左邊還是右邊明顯判斷太過粗糙,我的大致理解如下: 判斷object是左值還是右值(三種方法): (1)object能否被取地址,即&object是否合法; (2)objec
C++ 11 左值,右值,左值引用,右值引用,std::move, std::foward
這篇文章要介紹的內容和標題一致,關於C++ 11中的這幾個特性網上介紹的文章很多,看了一些之後想把幾個比較關鍵的點總結記錄一下,文章比較長。給出了很多程式碼示例,都是編譯執行測試過的,希望能用這些幫助理解C++ 11中這些比較重要的特性。 關於左值和右值的
C++11 左值、右值、右值引用詳解
左值、右值 在C++11中所有的值必屬於左值、右值兩者之一,右值又可以細分為純右值、將亡值。在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、沒有名字的就是右值(將亡值或純右值)。舉個例子,int a = b+c, a 就是左值,其有變數名為a
C++基礎知識(二)--左值右值--邏輯表示式求值優化--逗號運算子與表示式
一、C++左值右值概念 左值:c++將變數名代表的單元稱為左值,而將變數的值稱為右值,左值必須是記憶體中可以訪問且可以合法修改的物件,因此只能是變數名,而不能是常量或表示式。即左值可以定址。 右值:將變數的值稱為右值,由運算操作(加減乘除,函式呼叫返回值等)所產生的中間結果(沒有名字的結果)稱為右