1、左值和右值的概念
左值是可以放在賦值號左邊可以被賦值的值;左值必須要在記憶體中有實體;
右值當在賦值號右邊取出值賦給其他變數的值;右值可以在記憶體也可以在cpu暫存器。
乙個物件被用作右值時,使用的是它的內容(值),被當作左值時,使用的是它的位址。
2、引用
引用是c++語法做的優化,引用的本質還是靠指標來實現的。引用相當於變數的別名。
引用可以改變指標的指向,還可以改變指標所指向的值。
引用的基本規則:
宣告引用的時候必須初始化,且一旦繫結,不可把引用繫結到其他物件;即引用必須初始化,不能對引用重定義;
對引用的一切操作,就相當於對原物件的操作。
3、左值引用和右值引用
3.1 左值引用
左值引用的基本語法:type &引用名 = 左值表示式;
3.2 右值引用
右值引用的基本語法type &&引用名 = 右值表示式;
右值引用在企業開發人員在**優化方面會經常用到。
右值引用的「&&」中間不可以有空格。
#include using namespace std;
int main()
其實對於左值還是很好理解的,主要是對於右值是不好理解的,特別是**的16行處:右值的例子。c++之所以設計出右值引用的語法,主要是因為對於類似b+1;這樣的運算是發生在cpu暫存器上的,就不能對其取位址、賦值等操作,所以這類運算只能放在等號的右邊,將其賦給其他的變數。若等號右邊出現:&b,這樣的操作是,也是右值,因為取位址符的操作也是在暫存器中完成的。所以不能作為左值。 c 之左值引用和右值引用
一 左值與右值定義 左值與右值這兩概念是從 c 中傳承而來的,在 c 中,左值指的是既能夠出現在等號左邊也能出現在等號右邊的變數 或表示式 右值指的則是只能出現在等號右邊的變數 或表示式 在 c 語言中,通常來說有名字的變數就是左值 如上面例子中的 a,b 而由運算操作 加減乘除,函式呼叫返回值等 ...
c 11之左值引用和右值引用
c 11中增加了右值引用和move語義來避免一些不必要的構造和copy操作,以此來提公升程式的執行效率。首先說左值和右值,他們絕不是簡單的等號左邊和右邊的區別,總結來說 1 左值可以定址,而右值不可以。2 左值可以被賦值,右值不可以被賦值,可以用來給左值賦值。3 左值可變,右值可變 僅對基礎型別適用...
左值和右值,左值引用和右值引用
左值 lvalue 這一術語 於c語言,用來指代那些可以用在賦值表示式左側的東西,具名物件 在棧和堆上分配的物件,或者其他物件的成員,總之就是又確定儲存空間的東西。而術語右值 rvalue 也是源自c語言,指的是只能在賦值表示式右側出現的東西,如字面值和臨時物件。只能繫結到左值,不能繫結到右值的引用...