最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中左值和右值的區(qū)別詳解

 更新時(shí)間:2022年01月27日 08:55:28   作者:king9666  
大家好,本篇文章主要講的是C++中左值和右值的區(qū)別詳解,感興趣的同學(xué)趕緊來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下

左值右值定義:

左值指的是既能夠出現(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ǔ)類型,右值是不可被修改的(non-modifiable),也不可被 const, volatile 所修飾(cv-qualitification ignored)

其次,對(duì)于自定義的類型(user-defined types),右值卻允許通過(guò)它的成員函數(shù)進(jìn)行修改。

自定義類型應(yīng)該設(shè)計(jì)得和內(nèi)置類型盡量一樣(所謂 value type,value semantic),但允許成員函數(shù)改變右值這個(gè)特性卻有意無(wú)意使得自定義類型特殊化了。
對(duì)此,我們其實(shí)可以這樣想:自定義類型允許有成員函數(shù),而通過(guò)右值調(diào)用成員函數(shù)是被允許的,但成員函數(shù)有可能不是 const 類型,因此通過(guò)調(diào)用右值的成員函數(shù),也就可能會(huì)修改了該右值

左值引用, 右值引用

引用類型本身并不擁有所綁定對(duì)象的內(nèi)存,只是該對(duì)象的一個(gè)別名。

左值引用是具名變量值的別名,右值引用是不具名(匿名)變量的別名。

常量左值引用是個(gè)萬(wàn)能引用類型,可接受常量左值(帶有const),非常量左值和右值對(duì)其初始化。常量左值引用的右值在其生命期內(nèi)只能是只讀的

請(qǐng)?zhí)砑訄D片描述

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++ Boost Tokenizer使用詳細(xì)講解

    C++ Boost Tokenizer使用詳細(xì)講解

    Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱
    2022-11-11
  • 基于C++中常見(jiàn)內(nèi)存錯(cuò)誤的總結(jié)

    基于C++中常見(jiàn)內(nèi)存錯(cuò)誤的總結(jié)

    本篇文章是對(duì)C++中常見(jiàn)的內(nèi)存錯(cuò)誤進(jìn)行了總結(jié)介紹。需要的朋友參考下
    2013-05-05
  • C++中的explicit關(guān)鍵字實(shí)例淺析

    C++中的explicit關(guān)鍵字實(shí)例淺析

    在C++程序中很少有人去使用explicit關(guān)鍵字,不可否認(rèn),在平時(shí)的實(shí)踐中確實(shí)很少能用的上,再說(shuō)C++的功能強(qiáng)大,往往一個(gè)問(wèn)題可以利用好幾種C++特性去解決。接下來(lái)給大家介紹 C++中的explicit關(guān)鍵字,需要的朋友可以參考下
    2017-03-03
  • C語(yǔ)言實(shí)現(xiàn)單詞小幫手

    C語(yǔ)言實(shí)現(xiàn)單詞小幫手

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)單詞小幫手,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C++中stack容器的使用

    C++中stack容器的使用

    本文主要介紹了C++中stack容器的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 使用mmap實(shí)現(xiàn)大文件的復(fù)制(單進(jìn)程和多進(jìn)程)

    使用mmap實(shí)現(xiàn)大文件的復(fù)制(單進(jìn)程和多進(jìn)程)

    這篇文章主要為大家詳細(xì)介紹了使用mmap實(shí)現(xiàn)大文件的復(fù)制,單進(jìn)程與多進(jìn)程的兩種情況,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • OpenCV圖像處理之圖像拼接詳解

    OpenCV圖像處理之圖像拼接詳解

    本文主要介紹了如何使用C++?OpenCV實(shí)現(xiàn)圖像景拼接,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)OpenCV有一定的幫助,感興趣的可以了解一下
    2022-08-08
  • C++基本組件之內(nèi)存池詳解

    C++基本組件之內(nèi)存池詳解

    這篇文章主要為大家詳細(xì)介紹了C++中的基本組件——內(nèi)存池的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定的幫助,需要的可以參考一下
    2023-03-03
  • C++內(nèi)存泄漏及檢測(cè)工具詳解

    C++內(nèi)存泄漏及檢測(cè)工具詳解

    最簡(jiǎn)單的方法當(dāng)然是借助于專業(yè)的檢測(cè)工具,比較有名如BoundsCheck,功能非常強(qiáng)大,相信做C++開(kāi)發(fā)的人都離不開(kāi)它。此外就是不使用任何工具,而是自己來(lái)實(shí)現(xiàn)對(duì)內(nèi)存泄露的監(jiān)控
    2013-10-10
  • C實(shí)現(xiàn)與 uint64_t 相同功能的類

    C實(shí)現(xiàn)與 uint64_t 相同功能的類

    本文給大家分享的是筆者實(shí)現(xiàn)的仿uint64_t的類,可以用在不支持uint64_t的平臺(tái)上,雖然現(xiàn)在功能還不完善,但是還是分享給大家,也算是給大家一個(gè)思路吧。
    2015-12-12

最新評(píng)論

青铜峡市| 札达县| 蓬安县| 年辖:市辖区| 永登县| 伊宁市| 无棣县| 南昌县| 大港区| 芦溪县| 新宾| 宾阳县| 开封县| 时尚| 红河县| 平原县| 文山县| 太原市| 蒲江县| 岳阳县| 罗平县| 大同县| 札达县| 惠州市| 监利县| 获嘉县| 宜春市| 馆陶县| 浮山县| 阿图什市| 丰宁| 名山县| 庆云县| 紫云| 增城市| 平乡县| 宣威市| 朔州市| 花莲市| 凤台县| 那曲县|