a毛片毛费观看-a毛片在线-a毛片在线观看-a毛片在线免费观看-国产成人综合洲欧美在线-国产成人综合高清在线观看

始創(chuàng)于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業(yè)
  • 60秒人工響應
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補償
全部產(chǎn)品
您的位置: 網(wǎng)站首頁 > 幫助中心>文章內(nèi)容

C++ 11右值引用的理解

發(fā)布時間:  2012/9/20 16:56:43

C++ 11中引入的一個非常重要的概念就是右值引用。理解右值引用是學習“移動語義”(move semantics)的基礎。而要理解右值引用,就必須先區(qū)分左值與右值。

對左值和右值的一個最常見的誤解是:等號左邊的就是左值,等號右邊的就是右值。左值和右值都是針對表達式而言的,左值是指表達式結(jié)束后依然存在的持久對象,右值是指表達式結(jié)束時就不再存在的臨時對象。一個區(qū)分左值與右值的便捷方法是:看能不能對表達式取地址,如果能,則為左值,否則為右值。下面給出一些例子來進行說明。

int a = 10

int b = 20

int *pFlag = &a;

vector<int> vctTemp;

vctTemp.push_back(1);

string str1 = "hello "

string str2 = "world"

const int &m = 1

請問,a,b, a+b, a++, ++a, pFlag, *pFlag, vctTemp[0], 100, string("hello"), str1, str1+str2, m分別是左值還是右值?

a和b都是持久對象(可以對其取地址),是左值;

a+b是臨時對象(不可以對其取地址),是右值;

a++是先取出持久對象a的一份拷貝,再使持久對象a的值加1,最后返回那份拷貝,而那份拷貝是臨時對象(不可以對其取地址),故其是右值;

++a則是使持久對象a的值加1,并返回那個持久對象a本身(可以對其取地址),故其是左值;

pFlag和*pFlag都是持久對象(可以對其取地址),是左值;

vctTemp[0]調(diào)用了重載的[]操作符,而[]操作符返回的是一個int &,為持久對象(可以對其取地址),是左值;

100和string("hello")是臨時對象(不可以對其取地址),是右值;

str1是持久對象(可以對其取地址),是左值;

str1+str2是調(diào)用了+操作符,而+操作符返回的是一個string(不可以對其取地址),故其為右值;

m是一個常量引用,引用到一個右值,但引用本身是一個持久對象(可以對其取地址),為左值。

區(qū)分清楚了左值與右值,我們再來看看左值引用。左值引用根據(jù)其修飾符的不同,可以分為非常量左值引用和常量左值引用。

非常量左值引用只能綁定到非常量左值,不能綁定到常量左值、非常量右值和常量右值。如果允許綁定到常量左值和常量右值,則非常量左值引用可以用于修改常量左值和常量右值,這明顯違反了其常量的含義。如果允許綁定到非常量右值,則會導致非常危險的情況出現(xiàn),因為非常量右值是一個臨時對象,非常量左值引用可能會使用一個已經(jīng)被銷毀了的臨時對象。

常量左值引用可以綁定到所有類型的值,包括非常量左值、常量左值、非常量右值和常量右值。

可以看出,使用左值引用時,我們無法區(qū)分出綁定的是否是非常量右值的情況。那么,為什么要對非常量右值進行區(qū)分呢,區(qū)分出來了又有什么好處呢?這就牽涉到C++中一個著名的性能問題——拷貝臨時對象?紤]下面的代碼:

vector<int> GetAllScores()

{

vector<int> vctTemp;

vctTemp.push_back(90);

vctTemp.push_back(95);

return vctTemp;

}

當使用vector<int> vctScore = GetAllScores()進行初始化時,實際上調(diào)用了三次構(gòu)造函數(shù)。盡管有些編譯器可以采用RVO(Return Value Optimization)來進行優(yōu)化,但優(yōu)化工作只在某些特定條件下才能進行?梢钥吹,上面很普通的一個函數(shù)調(diào)用,由于存在臨時對象的拷貝,導致了額外的兩次拷貝構(gòu)造函數(shù)和析構(gòu)函數(shù)的開銷。當然,我們也可以修改函數(shù)的形式為void GetAllScores(vector<int> &vctScore),但這并不一定就是我們需要的形式。另外,考慮下面字符串的連接操作:

string s1("hello");

string s = s1 + "a" + "b" + "c" + "d" + "e"

在對s進行初始化時,會產(chǎn)生大量的臨時對象,并涉及到大量字符串的拷貝操作,這顯然會影響程序的效率和性能。怎么解決這個問題呢?如果我們能確定某個值是一個非常量右值(或者是一個以后不會再使用的左值),則我們在進行臨時對象的拷貝時,可以不用拷貝實際的數(shù)據(jù),而只是“竊取”指向?qū)嶋H數(shù)據(jù)的指針(類似于STL中的auto_ptr,會轉(zhuǎn)移所有權(quán))。C++ 11中引入的右值引用正好可用于標識一個非常量右值。C++ 11中用&表示左值引用,用&&表示右值引用,如:

int &&a = 10

右值引用根據(jù)其修飾符的不同,也可以分為非常量右值引用和常量右值引用。

非常量右值引用只能綁定到非常量右值,不能綁定到非常量左值、常量左值和常量右值(VS2010 beta版中可以綁定到非常量左值和常量左值,但正式版中為了安全起見,已不允許)。如果允許綁定到非常量左值,則可能會錯誤地竊取一個持久對象的數(shù)據(jù),而這是非常危險的;如果允許綁定到常量左值和常量右值,則非常量右值引用可以用于修改常量左值和常量右值,這明顯違反了其常量的含義。

常量右值引用可以綁定到非常量右值和常量右值,不能綁定到非常量左值和常量左值(理由同上)。

有了右值引用的概念,我們就可以用它來實現(xiàn)下面的CMyString類。

class CMyString

{

public:

// 構(gòu)造函數(shù)

CMyString(const char *pszSrc = NULL)

{

cout << "CMyString(const char *pszSrc = NULL)" << endl;

if (pszSrc == NULL)

{

m_pData = new char[1];

*m_pData = '


本文出自:億恩科技【www.ibaoshan.net】

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經(jīng)營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號總部企業(yè)基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線

     
     
    曰韩无码AV一区二区免费| 国精产品W灬源码1688伊在| 亚洲AV无码日韩精品影片| 欧美丰满少妇内射XXXX免费| 国产乱人伦偷精品视频下| 中文成人无字幕乱码精品区| 无码人妻精品一区二区蜜桃91| 免费无码高潮流白浆视频| 国产三级精品三级在线专区| TPU色母和PA6色母的作用| 亚洲成在人线AV中文字幕喷水| 人人婷婷色综合五月第四人色阁| 久9视频这里只有精品试看| 大J8黑人BBW巨大888| 亚洲已满18点击进入在线看片| 色视频WWW在线播放国产人成| 浪货趴办公桌~H揉秘书电影| 国产成人愉拍免费视频| 69成人免费视频无码专区| 亚洲Av无码一区二区三区大黄瓜 | 护士HD老师FREE性Ⅹ| 波多野结衣片全部电影| 亚洲欲色欲色XXXXX在线观看| 睡美人免费观看完整版西瓜| 蜜臀AV无码一区二区三区小说| 国产亚洲AV片在线观看播放按摩| PETEDAVIDSON鸟多长| 亚洲人成综合网站7777香蕉| 熟女性饥渴一区二区三区| 蜜桃AV无码乱码精品| 国产美女久久精品香蕉69| JIZZYOU中国少妇高潮| 亚洲乱码一区AV春药高潮图片| 色综合久久综合欧美综合网| 免费观看无遮挡WWW的视频| 国内精品久久久久影院蜜芽蜜芽T| 成年片色大黄全免费网站久久| 孕妇特级毛片WW无码内射| 亚洲AV无码成人精品区在线h | 亚洲精品无码久久久久去Q| 色情ⅩXXX欧美色妇HD| 蜜芽VA亚洲VA欧美VA天堂| 国产无遮挡无码很黄很污很刺激| CHINESE交换俱乐部4P| 亚洲日韩精品无码专区网址| 四川老妇女乱HD| 欧美黑人粗大猛烈18P| 精品少妇爆乳无码AⅤ区| 国产AV无码专区亚洲AV软件| 99热成人精品热久久6| 亚洲天天做日日做天天欢| 无码中文字幕日韩专区| 人妻丰满熟妇无码区yeezy| 久久天天躁夜夜躁狠狠| 国产午夜三级一区二区三| 成 人影片免费观看| 中文无码日韩欧免费视频 | 舌L子伦熟妇ΑV| 男女作爱免费网站在线观看| 精品久久久BBBB人妻| 国产对白videos麻豆高潮| 啊别插了视频高清在线观看| 在床上拔萝卜又疼又叫什么症状| 亚洲AV无码专区国产乱码APP| 少妇高潮惨叫久久久久久电影 | 99无人区码一码二码三码四| 亚洲小说图区综合在线| 无码人妻丰满熟妇惹区| 人妻一区二区三区在线| 美女扒开腿让男人桶爽网站| 护士被医生办公室狂玩| 国产很色很黄很大爽的视频| OM老熟女DHXⅩXXX69| 真实国产乱人伦在线视频播放| 亚洲成AV人片在线观看无下载| 天天夜碰日日摸日日澡性色AV| 人妻精品久久久久中文字幕| 蜜臀AV无码精品人妻色欲| 精品一区二区三区AV天堂| 国产男男GAY做受XXX| 丰满老熟妇好大BBBBB四P| japanese国产在线观看| 一炕四女被窝交换| 亚洲AV无码专区色爱天堂| 玩弄JaPan白嫩少妇一区二区 | 国产免费无遮挡吸乳视频在线观看| 吃花核心舌头在里面旋转| A级国产乱理伦片在线播放| 一区二区av在线| 亚洲精品永久在线观看| 小浪货水多奶大被领导| 熟妇高潮一区二区精品de| 日本丰满熟妇BBXBBXHD| 女高中生自慰污污网站| 久久久久久久精品免费看| 好男人好资源电影在线播放| 国产成人AV免费观看| 不卡无码人妻一区三区| 99久久婷婷国产综合亚洲| 一本大道东京热无码| 亚洲国产成在人网站天堂| 午夜免费无码福利视频| 少妇性XXXXXXXXX色武功| 欧洲女RAPPER潮水大豆| 男人J放进女人P全黄动态图| 久久一日本道色综合久久| 久久不卡国产精品无码| 狠狠色丁香五月综合婷婷| 国产精品午夜小视频观看| 国产AV寂寞骚妇| 粗大黑人巨茎大战欧美成人免费看| FREEⅩ性CHINESE中国| √天堂资源BT在线官网| 伊人久久大香线蕉亚洲| 亚洲手机看片AV| 亚洲美女又黄又爽在线观看 | 成人免费无码不卡毛片| www.丁香五月| 99久无码中文字幕一本久道| 中文字幕乱理片人妻无码888| 亚洲爽爆东京爽爆东京爽爆av| 亚洲精品蜜桃久久久久久| 亚洲AVT无码天堂网| 午夜精品久久久久久久无码| 偷欢人妻激情系列| 射精情感曰妓女色视频| 肉身避风港1978大米星球| 日本熟妇色VIDEO| 人妻少妇偷人精品无码| 欧洲最猛黑人XXXⅩ猛男欧| 欧美高潮抽搐喷水大叫| 年轻老师的滋味5| 男女超爽视频免费播放| 蜜桃视频在线观看| 美女高潮无遮挡喷水视频| 另类老妇性BBWBBW| 里面也请好好疼爱漫画最新章节| 久久久噜噜噜久久中文福利| 久久久久99精品成人片直播| 久久精品人妻中文系列葵司| 久久国产精品久久久久久| 久久不见久久见免费视频3| 久久精品国产99久久久小说| 久久99精品国产麻豆不卡| 精品水蜜桃久久久久久久| 精品久久久无码人妻中文字幕豆芽 | 忘忧草日本社区WWW在线| 少妇人妻偷人精品视频| 色哟哟网站在线观看入口| 色综合亚洲一区二区小说性色AⅤ| 日欧一片内射VA在线影院| 日韩A人毛片精品无人区乱码 | 十八18禁国产精品WWW| 少妇被粗大猛进进出Va| 少妇与子乱A级全毛片| 色欲香天天天综合网站| 少妇人妻偷人精品视频| 特大巨黑吊XXXX高潮| 玩弄漂亮少妇高潮白浆| 无码视频一区二区三区在线观看| 西欧FREE性满足HD| 亚洲AV无码一区二区三区观看| 亚洲成A人片在线观看国产| 亚洲精品高清国产一线久久| 亚洲精品V天堂中文字幕| 亚洲日韩一页精品发布| 野花韩国视频在线观看免费高清 | 99精产国电影品一二三产区区别| 69日本人XXXX16-18| AV无码中出一区二区三区| A级毛片免费高清视频| ZOOM人与ZOOMWIDS| 成人网站WWW污污污网站| 公和熄小婷乱中文字幕| 国产精品国产三级国产专不| 国产无遮挡又黄又大又爽| 狠狠躁日日躁夜夜躁2022麻豆| 精品亚洲一区二区三区在线观看| 久久久久国产亚洲AV麻豆| 老头扒开粉嫩的小缝亲吻网站| 男女性杂交内射妇女BBWXZ| 欧美最猛黑人XXXX黑人猛交3p| 日本喷奶水中文字幕视频| 少妇毛又多又黑一区二区| 我调教同学的放荡麻麻| 香蕉久久久久久AV综合网成人| 亚洲AV无码片在线播放| 亚洲欧美综合区丁香五月小说| 一二三四视频中文字幕| 18禁止免费观看试看免费大片| JIZZ成熟丰满| 纯肉无遮挡H肉动漫在线观看网址 纯肉无遮挡H肉动漫在线观看国产 | 日本强伦姧熟睡人妻完整视频| 少妇人妻偷人精品视频| 无码专区人妻系列日韩精品| 亚洲AV无码久久久久久精品同性| 亚洲精品无码少妇30P| 一区二区精品视频日本| 97精品伊人久久久大香线蕉 | 2021影音先锋AⅤ资源男人网|