左值 左值引用 右值 右值引用

2021-08-19 06:32:56 字數 1295 閱讀 8603

1、左值和右值的概念

左值是可以放在賦值號左邊可以被賦值的值;左值必須要在記憶體中有實體;

右值當在賦值號右邊取出值賦給其他變數的值;右值可以在記憶體也可以在cpu暫存器。

乙個物件被用作右值時,使用的是它的內容(值),被當作左值時,使用的是它的位址

2、引用

引用是c++語法做的優化,引用的本質還是靠指標來實現的。引用相當於變數的別名。

引用可以改變指標的指向,還可以改變指標所指向的值。

引用的基本規則:

宣告引用的時候必須初始化,且一旦繫結,不可把引用繫結到其他物件;即引用必須初始化

,不能對引用重定義

對引用的一切操作,就相當於對原物件的操作。

3、左值引用和右值引用

3.1 左值引用

左值引用的基本語法:type &引用名 = 左值表示式;

3.2 右值引用

右值引用的基本語法type &&引用名 = 右值表示式;

右值引用在企業開發人員在**優化方面會經常用到。

右值引用的「&&」中間不可以有空格。

********************====std::move *************************=

通過std::move,可以避免不必要的拷貝操作。

std::move是為效能而生。

std::move是將物件的狀態或者所有權從乙個物件轉移到另乙個物件,只是轉移,沒有記憶體的搬遷或者記憶體拷貝。

如string類在賦值或者拷貝建構函式中會宣告char陣列來存放資料,然後把原string中的 char 陣列被析構函式釋放,如果a是乙個臨時變數,則上面的拷貝,析構就是多餘的,完全可以把臨時變數a中的資料直接 「轉移」 到新的變數下面即可。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#include

#include

#include

#include

intmain()

左值 右值 左值引用 右值引用

2015 06 01 15 07 404人閱讀收藏 舉報 c 11 5 一 c 中的左值和右值 誤區 左值位於等號左邊,右值位於等號右邊。c 11中的定義 左值表示式表示的是乙個物件的身份 在記憶體中的位置 而右值表示式表示的是物件的值 內容 左值和右值都是針對表示式而言的,左值是持久的,右值是短暫...

左值 左值引用 右值 右值引用

1 左值和右值的概念 左值是可以放在賦值號左邊可以被賦值的值 左值必須要在記憶體中有實體 右值當在賦值號右邊取出值賦給其他變數的值 右值可以在記憶體也可以在cpu暫存器。乙個物件被用作右值時,使用的是它的內容 值 被當作左值時,使用的是它的位址。2 引用 引用是c 語法做的優化,引用的本質還是靠指標...

左值 左值引用 右值 右值引用

1 左值和右值的概念 左值是可以放在賦值號左邊可以被賦值的值 左值必須要在記憶體中有實體 右值當在賦值號右邊取出值賦給其他變數的值 右值可以在記憶體也可以在cpu暫存器。乙個物件被用作右值時,使用的是它的內容 值 被當作左值時,使用的是它的位址。2 引用 引用是c 語法做的優化,引用的本質還是靠指標...