国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

左值引用、右值引用,std::move() 的匯編解釋

這篇具有很好參考價(jià)值的文章主要介紹了左值引用、右值引用,std::move() 的匯編解釋。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1:左值引用
引用其實(shí)還是指針,但回避了指針這個(gè)名字。由編譯器完成從地址中取值。以vs2019反匯編:
左值引用、右值引用,std::move() 的匯編解釋
如圖,指針和引用的匯編代碼完全一樣。但引用在高級(jí)語(yǔ)言層面更友好,對(duì)人腦。比如可以少寫一個(gè) * 號(hào)和 -> 。
,以下是指針和引用的使用:
左值引用、右值引用,std::move() 的匯編解釋
以上就是左值引用,引用的必須是具有內(nèi)存地址的對(duì)象,因?yàn)橐瓿梢贸跏蓟?br> 2 :
右值引用,引用的是值。一個(gè)變量的符號(hào)有兩層含義:出現(xiàn)在 = 左邊代表變量所在的內(nèi)存地址。如 a = 3
出現(xiàn)在等號(hào)右邊代表變量的值,即內(nèi)存地址里面存儲(chǔ)的值。
引入左值引用,右值引用,也是為了區(qū)分符號(hào)的這兩種屬性。左值引用的必須具有內(nèi)存地址,右值引用必須具有值,不能具有地址,比如常量。
左值引用、右值引用,std::move() 的匯編解釋
如圖,c++ 對(duì)右值引用的處理是為這個(gè)只有值的常量分配內(nèi)存,在其中存儲(chǔ)常量的值,并把地址傳遞給右值引用。從高級(jí)語(yǔ)言的使用上與 a = 3 沒什么區(qū)別。而且可見,左右值引用,存儲(chǔ)的都是變量的地址,類似于指針。

3 :
但左值引用作為函數(shù)參數(shù),觸發(fā)copy構(gòu)造函數(shù)和賦值運(yùn)算符=函數(shù)。右值引用作為函數(shù)參數(shù),觸發(fā)移動(dòng)構(gòu)造函數(shù)和移動(dòng)運(yùn)算符=函數(shù),實(shí)現(xiàn)了不同的語(yǔ)義和功能。移動(dòng)比復(fù)制需要的指令更少,所以程序運(yùn)行更快。

4:
std:: move() 函數(shù),強(qiáng)制轉(zhuǎn)換左值引用為右值引用。c++ 的語(yǔ)法很有對(duì)稱性,定下了一個(gè)語(yǔ)法規(guī)則,再定義一個(gè)與本語(yǔ)法相斥的規(guī)則。功能很完善。
語(yǔ)法上 :
左值引用、右值引用,std::move() 的匯編解釋
最終結(jié)果實(shí)現(xiàn)了 rLLa 和 rLa 同時(shí)對(duì) a 的引用,都指向 a 。修改rLa 為左值引用 int & rLa = a;以編譯調(diào)試則:
左值引用、右值引用,std::move() 的匯編解釋
5 : 解釋 std :: move()
該函數(shù)的定義如下:其參數(shù)是右值引用,返回值還是右值引用,找重點(diǎn),靜態(tài)轉(zhuǎn)換的函數(shù)先少考慮,一會(huì)看匯編,看結(jié)果。
左值引用、右值引用,std::move() 的匯編解釋
以下是對(duì) move 函數(shù)調(diào)用的匯編處理,x64的調(diào)試環(huán)境,現(xiàn)在用32位x86調(diào)試就落后了。
左值引用、右值引用,std::move() 的匯編解釋
可見: move 函數(shù)要求傳入的是變量的地址。該函數(shù)其實(shí)直接把參數(shù)中接收的變量地址給返了回去。實(shí)現(xiàn)了強(qiáng)制左值為右值。即有內(nèi)存地址的仍然作為右值引用。
以下就是 move 編譯后的匯編代碼:
左值引用、右值引用,std::move() 的匯編解釋

注意1397行,直接把參數(shù)的值返了回去。這是一個(gè)變量的地址。
所以結(jié)論是:左值引用,右值引用存儲(chǔ)的都是變量的地址,都是我們熟知的引用,沒有發(fā)生語(yǔ)義的變化。
謝謝閱讀。反匯編學(xué)編程,好辦法,文章來源地址http://www.zghlxwxcb.cn/news/detail-443465.html

到了這里,關(guān)于左值引用、右值引用,std::move() 的匯編解釋的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【C++11】左值引用和右值引用

    【C++11】左值引用和右值引用

    需要云服務(wù)器等云產(chǎn)品來學(xué)習(xí)Linux的同學(xué)可以移步/--騰訊云--/--阿里云--/--華為云--/官網(wǎng),輕量型云服務(wù)器低至112元/年,新用戶首次下單享超低折扣。 ??? 目錄 一、新的類功能 1、新的默認(rèn)成員函數(shù) 2、類成員變量初始化 3、強(qiáng)制生成默認(rèn)函數(shù)的default 4、禁止生成默認(rèn)函

    2023年04月17日
    瀏覽(24)
  • 初識(shí)C++之左值引用與右值引用

    初識(shí)C++之左值引用與右值引用

    目錄 一、左值引用與右值引用 1. 左值和右值的概念 1.1 左值 1.2?右值 ?1.3 左值與右值的區(qū)分 2. 左值引用與右值引用 2.1 左值引用與右值引用的使用方法 2.2?左值引用的可引用范圍 2.3?右值引用的可引用范圍 3. 右值引用的作用 3.1 減少傳值返回的拷貝 3.2 插入時(shí)的右值引用 4

    2023年04月26日
    瀏覽(20)
  • 【送書】【C++11】左值引用和右值引用

    【送書】【C++11】左值引用和右值引用

    需要云服務(wù)器等云產(chǎn)品來學(xué)習(xí)Linux的同學(xué)可以移步/--騰訊云--/--阿里云--/--華為云--/官網(wǎng),輕量型云服務(wù)器低至112元/年,新用戶首次下單享超低折扣。 ??? 目錄 一、新的類功能 1、新的默認(rèn)成員函數(shù) 2、類成員變量初始化 3、強(qiáng)制生成默認(rèn)函數(shù)的default 4、禁止生成默認(rèn)函

    2023年04月09日
    瀏覽(20)
  • C++ 學(xué)習(xí)系列 1 -- 左值、右值與萬能引用

    C++ 學(xué)習(xí)系列 1 -- 左值、右值與萬能引用

    簡(jiǎn)單的說,左值可以放在等號(hào)的左邊,右值可以放在等號(hào)的右邊。 左值可以取地址,右值不能取地址。 1.1 左值舉例: 變量、函數(shù)或數(shù)據(jù)成員 返回左值引用的表達(dá)式 如 ++x、x = 1、cout \\\' \\\'? int x = 0 1.2 右值舉例: 返回非引用類型的表達(dá)式 如 x++、x + 1 除字符串字面量之外的字面

    2024年02月14日
    瀏覽(20)
  • 右值引用解釋

    C++11新增加的引用——右值引用(rvalue reference),使用聲明 作用:只能引用臨時(shí)變量和常量值 int main() { ? ? ? ? double a = 11.1; ? ? ? ? //double a1 = a*2+10.0;//錯(cuò)誤,不能引用臨時(shí)變量 ? ? ? ? double ra = a*2 + 10.0;//合法 ? ? ? ? double b1 = sqrt(100);//錯(cuò)誤,不能引用臨時(shí)變量 ? ? ? ?

    2024年01月18日
    瀏覽(14)
  • C++ 左值和右值

    C++ 左值和右值

    在C++11中所有的值必屬于左值、右值兩者之一,右值又可以細(xì)分為純右值、將亡值。在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、沒有名字的就是右值(將亡值或純右值)。舉個(gè)例子,int a = b+c, a 就是左值,其有變量名為a,通過a可以獲取該變量的地址;

    2024年02月14日
    瀏覽(14)
  • C++左值右值完美轉(zhuǎn)發(fā)轉(zhuǎn)移

    英文含義: 左值(Lvalue) : Locator value ,意味著它指向一個(gè)具體的內(nèi)存位置。 右值(Rvalue) : Read value ,指的是可以讀取的數(shù)據(jù),但不一定指向一個(gè)固定的內(nèi)存位置。 定義 左值 :指的是一個(gè)持久的內(nèi)存地址。左值可以出現(xiàn)在賦值操作的左側(cè)或右側(cè)。例如,變量、數(shù)組的元

    2024年03月10日
    瀏覽(35)
  • 【C語(yǔ)言深入】細(xì)聊C語(yǔ)言中的“左值”和“右值”

    【C語(yǔ)言深入】細(xì)聊C語(yǔ)言中的“左值”和“右值”

    左值就是那些可以出現(xiàn)在賦值符號(hào)左邊的東西,它標(biāo)識(shí)了一個(gè)可以存儲(chǔ)結(jié)果值的地點(diǎn)。 程序在編譯時(shí),編譯器會(huì)為每個(gè)變量分配一個(gè)地址(左值),這個(gè)地址在編譯是即可知。 也就是說,左值在編譯時(shí)即可知,左值標(biāo)志存儲(chǔ)結(jié)果的一個(gè)地方,也可以理解為左值就是一塊空間。

    2024年02月14日
    瀏覽(12)
  • C++面試八股文:什么是左值,什么是右值?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第16面: 面試官:什么是左值,什么是右值? 二師兄:簡(jiǎn)單來說,左值就是可以使用 符號(hào)取地址的值,而右值一般不可以使用 符號(hào)取地址。 二師兄:一般左值存在內(nèi)存中,而右值存在寄存器中。 二師兄:嚴(yán)格意義上分,右值

    2024年02月09日
    瀏覽(17)
  • C++:深入理解C++11新特性:Chapter3:左值和右值

    C++:深入理解C++11新特性:Chapter3:左值和右值

    在C語(yǔ)言中,我們常常會(huì)提起左值(lvalue),右值(rvalue)這樣的稱呼,而在編譯程序時(shí),編譯器有時(shí)也會(huì)報(bào)出錯(cuò)誤信息中包含 左值,右值說法。不過左值、右值通常不是通過一個(gè)嚴(yán)謹(jǐn)?shù)亩x而為人所知。下面我通過這樣一個(gè)例子,來引導(dǎo)大家認(rèn)識(shí): 左值,右值,左值引用,右

    2024年02月04日
    瀏覽(102)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包