C++中左值和右值的區(qū)別詳解
左值右值定義:
左值指的是既能夠出現(xiàn)在等號(hào)左邊也能出現(xiàn)在等號(hào)右邊的變量(或表達(dá)式),右值指的則是只能出現(xiàn)在等號(hào)右邊的變量(或表達(dá)式).
int a; int b; a = 1; b = 2; a = b; b = a; a + b = 3; // 非法表示
右值分為純右值和將亡值:
純右值:臨時(shí)變量和不跟對(duì)象關(guān)聯(lián)的字面量值
將亡值:在確保其他變量不再被使用或即將銷(xiāo)毀時(shí),通過(guò)盜取的方式,可以避免內(nèi)存空間的釋放和分配,能夠延長(zhǎng)變量值的生命期。右值通常不具有名字,也只能通過(guò)引用的方式找到它的存在。
特性
首先, 對(duì)于基礎(chǔ)類(lèi)型,右值是不可被修改的(non-modifiable),也不可被 const, volatile 所修飾(cv-qualitification ignored)
其次,對(duì)于自定義的類(lèi)型(user-defined types),右值卻允許通過(guò)它的成員函數(shù)進(jìn)行修改。
自定義類(lèi)型應(yīng)該設(shè)計(jì)得和內(nèi)置類(lèi)型盡量一樣(所謂 value type,value semantic),但允許成員函數(shù)改變右值這個(gè)特性卻有意無(wú)意使得自定義類(lèi)型特殊化了。
對(duì)此,我們其實(shí)可以這樣想:自定義類(lèi)型允許有成員函數(shù),而通過(guò)右值調(diào)用成員函數(shù)是被允許的,但成員函數(shù)有可能不是 const 類(lèi)型,因此通過(guò)調(diào)用右值的成員函數(shù),也就可能會(huì)修改了該右值
左值引用, 右值引用
引用類(lèi)型本身并不擁有所綁定對(duì)象的內(nèi)存,只是該對(duì)象的一個(gè)別名。
左值引用是具名變量值的別名,右值引用是不具名(匿名)變量的別名。
常量左值引用是個(gè)萬(wàn)能引用類(lèi)型,可接受常量左值(帶有const),非常量左值和右值對(duì)其初始化。常量左值引用的右值在其生命期內(nèi)只能是只讀的
E.g.1
int &a = 2; # 左值引用綁定到右值,編譯失敗 int b = 2; # 非常量左值 const int &c = b; # 常量左值引用綁定到非常量左值,編譯通過(guò) const int d = 2; # 常量左值 const int &e = c; # 常量左值引用綁定到常量左值,編譯通過(guò) const int &b =2; # 常量左值引用綁定到右值,編程通過(guò)
E.g.2
int a; int &&r1 = c; # 編譯失敗 int &&r2 = std::move(a); # 編譯通過(guò)
總結(jié)
到此這篇關(guān)于C++中左值和右值的區(qū)別詳解的文章就介紹到這了,更多相關(guān)C++左值和右值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言設(shè)計(jì)前中后隊(duì)列實(shí)例代碼
隊(duì)列最主要的作用就是用來(lái)管理數(shù)據(jù)流的,防止數(shù)據(jù)因?yàn)閭鬏旑l率過(guò)快得不到及時(shí)處理而丟失,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言設(shè)計(jì)前中后隊(duì)列的相關(guān)資料,需要的朋友可以參考下2021-12-12C語(yǔ)言實(shí)現(xiàn)飛機(jī)游戲(2)
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)飛機(jī)游戲的第二部分,進(jìn)行功能完善,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05Qt+Quick實(shí)現(xiàn)圖片演示器的開(kāi)發(fā)
這篇文章主要為大家詳細(xì)介紹了Qt如何利用Quick實(shí)現(xiàn)圖片演示器的開(kāi)發(fā),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Qt有一定的幫助,需要的可以參考一下2023-01-01C++實(shí)現(xiàn)strcpy函數(shù)實(shí)例
這篇文章主要介紹了C++實(shí)現(xiàn)strcpy函數(shù)實(shí)例,步驟講解的很詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,感興趣的朋友跟隨小編一起來(lái)研究吧2020-12-12