大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) JavaSE入門到精通視頻:賦值運算符的三個注意事項

JavaSE入門到精通視頻:賦值運算符的三個注意事項

更新時間:2020-02-26 09:23:31 來源:動力節(jié)點 瀏覽2342次


  C.60:Makecopyassignmentnon-virtual,taketheparameterbyconst&,andreturnbynon-const&


  C.60:拷貝賦值運算符應(yīng)該是以const&為參數(shù),返回非常量引用類型的非虛函數(shù)


  Reason(原因)


  Itissimpleandefficient.Ifyouwanttooptimizeforrvalues,provideanoverloadthattakesa&&(seeF.18).


  因為這樣簡單且高效。如果你希望對右值優(yōu)化,提供一個使用&&(右值引用)的重載。


JavaSE入門到精通視頻:賦值運算符的三個注意事項


  Example(示例)


  classFoo{public:Foo&operator=(constFoo&x){//GOOD:noneedtocheckforself-assignment(otherthanperformance)autotmp=x;swap(tmp);//seeC.83return*this;}//...};Fooa;Foob;Foof();a=b;//assignlvalue:copya=f();//assignrvalue:potentiallymove


  Note(注意)


  Theswapimplementationtechniqueoffersthestrongguarantee.


  實現(xiàn)交換函數(shù)(參考C.83)的技術(shù)提供了(不會發(fā)生自拷貝,譯者注)強(qiáng)有力的保證。


  Example(示例)


  Butwhatifyoucangetsignificantlybetterperformancebynotmakingatemporarycopy?ConsiderasimpleVectorintendedforadomainwhereassignmentoflarge,equal-sizedVectorsiscommon.Inthiscase,thecopyofelementsimpliedbytheswapimplementationtechniquecouldcauseanorderofmagnitudeincreaseincost:


  但是能不能通過少進(jìn)行一次臨時的拷貝動作來得到明顯更高的性能呢?考慮用于(元素,譯者注)大小相同的巨大Vector賦值的簡單的Vector的場景。在這種情況下,通過swap技術(shù)實現(xiàn)的元素拷貝動作將引起成本的大幅度增加。


  譯者注


  前面的例子,在swap之前進(jìn)行了一次拷貝構(gòu)造


  template<typenameT>classVector{public:Vector&operator=(constVector&);//...private:T*elem;intsz;};Vector&Vector::operator=(constVector&a){if(a.sz>sz){//...usetheswaptechnique,itcan'tbebettered...return*this;}//...copyszelementsfrom*a.elemtoelem...if(a.sz<sz){//...destroythesurpluselementsin*thisandadjustsize...}return*this;}


  Bywritingdirectlytothetargetelements,wewillgetthebasicguaranteeratherthanthestrongguaranteeofferedbytheswaptechnique.Bewareofself-assignment.


  通過將數(shù)據(jù)直接寫入對象元素,我們可以得到基本的保證而不是通過swap技術(shù)提供的強(qiáng)保證。為了防止自己給自己賦值。


  Alternatives(可選項)


  Ifyouthinkyouneedavirtualassignmentoperator,andunderstandwhythat'sdeeplyproblematic,don'tcallitoperator=.Makeitanamedfunctionlikevirtualvoidassign(constFoo&).Seecopyconstructorvs.clone().


  如果你認(rèn)為你需要一個虛賦值操作運算符,而且理解它會產(chǎn)生很深刻的問題,別把設(shè)計成賦值運算符。將它定義為具名函數(shù),例如virtualvoidassign(constFoo&)。


  拷貝構(gòu)造vs克隆的鏈接:


  https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rc-copy-virtual


  Enforcement(實施建議)


  (Simple)Anassignmentoperatorshouldnotbevirtual.Herebedragons!(簡單)賦值運算符不應(yīng)該是虛函數(shù)。那樣做很危險。


  (Simple)AnassignmentoperatorshouldreturnT&toenablechaining,notalternativeslikeconstT&whichinterferewithcomposabilityandputtingobjectsincontainers.(簡單)賦值運算符應(yīng)該返回T&,這樣才能實現(xiàn)連續(xù)賦值。不要改成類似constT&的類型,這樣會影響組裝性并妨礙將對象放進(jìn)容器中。


  (Moderate)Anassignmentoperatorshould(implicitlyorexplicitly)invokeallbaseandmemberassignmentoperators.Lookatthedestructortodetermineifthetypehaspointersemanticsorvaluesemantics.(中等)賦值運算符應(yīng)該(隱式或顯式)調(diào)用所有的基類和成員的賦值運算符。觀察析構(gòu)函數(shù)以決定這個類型式指針語義還是值語義。


JavaSE入門到精通視頻:賦值運算符的三個注意事項


      以上就是動力節(jié)點Java培訓(xùn)機(jī)構(gòu)小編介紹的“JavaSE入門到精通視頻:賦值運算符的三個注意事項”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。


提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 中文字幕在线免费观看 | 久久国产亚洲高清观看5388 | 夜夜穞狠狠穞 | 99精品中文字幕 | 毛茸茸的浓密在线视频 | 成 人 免 费 黄 色 | 精品一区二区在线欧美日韩 | 亚洲视频在线观看不卡 | 日韩精品首页 | 久久精品卫校国产小美女 | 日韩中文字幕一区 | swag系列国产精品 | 午夜精品在线免费观看 | 久久久久久久一精品 | 99精品久久久久久久婷婷 | 久久久久久久亚洲精品一区 | 久久亚洲精品久久久久 | 国语一区| 天天操天天干天天操 | 7777精品久久久大香线蕉 | 久久怡红院国产精品 | 国产精品视屏 | 免费播放欧美毛片欧美aaaaa | 免费中日高清无专码有限公司 | 天堂一区二区三区精品 | 国产精品99久久久久久夜夜嗨 | 国产精品分类视频分类一区 | 日本最猛黑人xxxx猛交 | 91亚洲精品一区二区自 | 国产亚洲精品久久久久久久网站 | 三级不卡 | 毛片网站大全 | 亚洲产在线精品第一站不卡 | 狠狠色成人综合 | 国产成人lu在线视频 | 日韩免费一级毛片欧美一级日韩片 | 色综合综合网 | 羞羞视频免费在线观看 | 中文字幕在线不卡精品视频99 | 9久热这里只有精品视频在线观看 | 九九精品99 |