黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

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

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

更新時間:2020-02-26 09:23:31 來源:動力節點 瀏覽2430次


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


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


  Reason(原因)


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


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


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.


  實現交換函數(參考C.83)的技術提供了(不會發生自拷貝,譯者注)強有力的保證。


  Example(示例)


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


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


  譯者注


  前面的例子,在swap之前進行了一次拷貝構造


  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.


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


  Alternatives(可選項)


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


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


  拷貝構造vs克隆的鏈接:


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


  Enforcement(實施建議)


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


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


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


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


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


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 波多野结衣在线一区二区 | 午夜做性视频 | 一本视频在线 | 天天曰夜夜曰 | 欧美一区二区三区精品影视 | 一级黄色录像毛片 | 天堂va欧美ⅴa亚洲va一国产 | 国产精品www | 农村偷人一级超爽毛片 | 亚洲免费观看视频 | 成人影院在线 | 免费看美女毛片 | 黄色天堂在线 | 性色在线观看 | 欧美影院一区二区三区 | 亚州免费视频 | 亚洲你懂的 | 欧美在线播放成人免费 | 日韩一区二区免费看 | 国产成人欧美一区二区三区vr | a级黄色网址 | 老司机免费福利午夜入口ae58 | 久草免费福利视频 | 最近更新2019中文字幕 | 最近免费中文字幕大全高清大全1 | 视频国产精品丝袜第一页 | 中文字幕丝袜 | 亚洲黄色免费观看 | 天天躁夜夜躁狠狠躁2021西西 | 国产一级特黄aa大片免费 | 精品国产乱码一区二区三区 | 国产成人精品亚洲77美色 | 国产精品视频一区二区三区不卡 | 欧美一级久久久久久久久大 | 黄色片黄色片黄色片黄色片黄色片 | 国产情侣草莓视频在线 | 午夜剧场免费观看 | 黄色大片在线免费观看 | 看看免费a一片欧 | 国产综合成人观看在线 | 亚洲 欧美 日韩在线综合福利 |