簡介C 11中的左值 純右值 將亡值

2021-10-03 23:15:40 字數 549 閱讀 5830

在c++11以後,表示式按值類別,可分為3種: 另,

泛左值(generalized lvalue,glvalue) = 左值 + 將亡值

右值(right value,rvalue) = 純右值 + 將亡值

以下詳細講解:

這裡解釋一下「具名的右值引用是左值」。看下面的**:

void foo(x&& a)

這裡 a 是乙個具名的右值引用,在 「x b=a;」 這一句,因為a是左值,所以呼叫的是x的拷貝建構函式而不是移動建構函式,因此此句之後對a進行訪問是沒有問題的。而這就是「具名的右值引用是左值」的意義所在。

純右值:純粹的字面值(如10,true),或者是 求值結果相當於字面值(除字串)或不具名的臨時物件。

在c++11之前的右值和c++11中的純右值是等價的。c++11中的將亡值是隨著右值引用(即像int && a 這樣的)而引入的。

所謂的「將亡」,當乙個右值準備完成初始化或賦值任務時,它就將亡了。

將亡值表示式,就是:

以下是將亡值:

(完)

C 11之左值 純右值和將亡值

在c 11中所有的值一定屬於左值 純右值和將亡值三種值之一,分別介紹一下這三種型別。在c 中定義左值與右值的比較標準的方法是根據其可以取位址來判斷。左值就是可以對變數進行取位址或者有名字的變數,按照c語言中的規定也就是說其在記憶體中是被分配了位置 而右值就是不可以取位址 沒有名字的。比如 a b c...

C grammar 左值 右值和將亡值

在c 03中就有相關的概念 通俗的理解 1 能放在等號左邊的是lvalue 2 只能放在等號右邊的是rvalue 3 lvalue可以作為rvalue使用 對於第三點可以舉個例子 int x x 6 x是左值,6是右值 int y y 6 y是左值,6是右值 y x x作為右值,所以左值是可以作為右...

C 11 左值 右值 右值引用詳解

在c 11中所有的值必屬於左值 右值兩者之一,右值又可以細分為純右值 將亡值。在c 11中可以取位址的 有名字的就是左值,反之,不能取位址的 沒有名字的就是右值 將亡值或純右值 舉個例子,int a b c,a 就是左值,其有變數名為a,通過 a可以獲取該變數的位址 表示式b c 函式int fun...