城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

C辨析浅复制深复制移动语义下的移动复制

6月18日 断龙塔投稿
  浅复制(默认、复制构造函数,赋值操作符重载):当涉及到动态内存时,不安全;
  深复制(默认、复制构造函数,赋值操作符重载):当涉及到动态内存时,安全;
  移动语义(移动构造函数,移动赋值操作符重载):一种特殊的浅复制定义(右值引用),用来避免不必要的副本机制和临时对象的创建与删除。
  要实现移动语义,需要采取某种方式,让编译器知道什么时候需要复制,什么时候不需要。这就是右值引用发挥作用的地方。可定义两个构造函数。其中一个是常规复制构造函数,它使用const左值引用作为参数,这个引用关联到左值实参;另一个是移动构造函数,它使用右值引用作为参数,该引用关联到右值实参。复制构造函数可执行深复制,而移动构造函数只调整记录。在将所有权转移给新对象的过程中,移动构造函数可能修改其实参,这意味着右值引用参数不应是const。
  代码:stdmove。cppusingstd::move()includeiostreamincludeutilityusethefollowingforg4。5definenullptr0interfaceclassUseless{private:numberofobjectsvoidShowObject()public:Useless();explicitUseless(intk);Useless(intk,charch);Useless(constUselessf);regularcopyconstructorUseless(Uselessf);moveconstructorUseless();Uselessoperator(constUselessf)Uselessoperator(constUselessf);copyassignmentUselessoperator(Uselessf);moveassignmentvoidShowData()};implementationintUseless::ct0;Useless::Useless(){n0;}Useless::Useless(intk):n(k){pcnewchar〔n〕;}Useless::Useless(intk,charch):n(k){pcnewchar〔n〕;for(inti0;i)pc〔i〕}Useless::Useless(constUselessf):n(f。n){pcnewchar〔n〕;for(inti0;i)pc〔i〕f。pc〔i〕;}Useless::Useless(Uselessf):n(f。n){pcf。stealaddressf。giveoldobjectnothinginreturnf。n0;}Useless::Useless(){delete〔〕}UselessUseless::operator(constUselessf)copyassignment{std::coutcopyassignmentoperatorcalled:;if(thisf)delete〔〕nf。n;pcnewchar〔n〕;for(inti0;i)pc〔i〕f。pc〔i〕;}UselessUseless::operator(Uselessf)moveassignment{std::coutmoveassignmentoperatorcalled:;if(thisf)delete〔〕nf。n;pcf。f。n0;f。}UselessUseless::operator(constUselessf)const{UselesstempUseless(nf。n);for(inti0;i)temp。pc〔i〕pc〔i〕;for(itemp。n;i)temp。pc〔i〕f。pc〔in〕;}voidUseless::ShowObject()const{std::coutNumberofelements:n;std::coutDataaddress:(void)pcstd::}voidUseless::ShowData()const{if(n0)std::cout(objectempty);elsefor(inti0;i)std::coutpc〔i〕;std::coutstd::}applicationintmain(){usingstd::{Uselessone(10,x);Ucallsmoveconstructorcoutobjectone:;one。ShowData();coutobjecttwo:;two。ShowData();Uselessthree,three。ShowData();one。ShowData();four。ShowData();coutfourmove(one);fourstd::move(one);four。ShowData();one。ShowData();}std::cin。get();}
  通过提供一个使用左值引用的构造函数和一个使用右值引用的构造函数,将初始化分成了两组。使用左值对象初始化对象时,将使用复制构造函数,而使用右值对象初始化对象时,将使用移动构造函数。程序员可根据需要赋予这些构造函数不同的行为。
  ref
  StephenPrata:《CPrimerPlus(6th2011)》
  End
投诉 评论 转载

小王造句用小王造句大全181、终于把小王给找回来了。谢天谢地,真不容易。182、我不想说你幸福就好一点都不好,狐狸勉强微笑着对小王子说你看至少我留下了麦田的颜色啊,我想小王子离开以后那麦田只会……C辨析浅复制深复制移动语义下的移动复制浅复制(默认、复制构造函数,赋值操作符重载):当涉及到动态内存时,不安全;深复制(默认、复制构造函数,赋值操作符重载):当涉及到动态内存时,安全;移动语义(移动构造……稻盛和夫干法读后感一本好书,一定有基于产生它的社会基础。当我读完这本干法之后,我喜欢上了这本书,这本书对我受益匪浅。对我最大的感触有两点:一是日本人百折不挠,精益求精的精神。二就是现代人与古代人……小米手机购买流程(米粉注意了)小米手机购买流程(米粉注意了)小米公司从成立开始给米粉的印象就是耍猴,小米1发布的时候多少米粉熬夜抢购依然无果而终,而从小米1到现在小米9,似乎除了小米8稍微不用怎么抢购……包饺子的启示冬至快到了,我们家准备包饺子,以前,我只顾着吃,这次,我也准备来学习包饺子。放学回到家,我迫不及待地来到厨房,只见妈妈、爷爷和奶奶都在包饺子,他们包的饺子很好看,圆圆的肚……延伸到造句用延伸到造句大全一、清澈的蓝灰色漫过天际一直延伸到辽远的东方,在斑斓的云絮和寥寥的星空间有几道绚丽的金色光芒。接着涌出一寸寸秀丽的殷红,那么稚嫩,那么纯净,那么明亮而美丽。这就是我们啊,那一束……性观念过度开放致使艾滋病患者增多近几年来,通过市疾控中心多种手段的干预,我市艾滋病疫情尽管总体仍呈逐年增长趋势,但增长幅度已经放缓,并呈现出一些新的特点,尤其是性观念过度开放致使艾滋病患者增多。一是经性……世界上最迟钝的鱼,被吃掉一半身体都无动于衷,然而却永不会灭绝在大自然这个弱肉强食的环境里,没有足够的实力保护自己的话,一般都会濒临秘诀,所以大自然里的生物大多有保护自己的独特手段。如变色龙的变色,乌龟的硬壳,羚羊的奔跑速度,这些技能基本……网路平台提供自由职业机会让您边旅游边赚收入据一篇英国的报导(5月6日)指出,互联网提供了许多让人们在线工作的赚钱机会,人人都可以参与各种活动,并创造广告价值。通过互联网可在家工作获利,是许多人的梦想。现在,有一个全新独……高考单项选择题的命题思路下5。语法结构趋向复杂化1)。Whatdoyouthinkofteaching,Bob?Ifinditfunandchallenging,Itisajobyouare……马来造句用马来造句大全(181)蓝色。厚的,打旋的学校的黑鳍白鲑梭鱼类往返深海在西巴丹岛之外,马来西亚。(182)这份报告主要集中在海湾国家和马来西亚。报告称,大批回国的人为贫穷的无技能工人。……比高造句用比高造句大全121山舞银蛇,原驰蜡象,欲与天公试比高,须晴日,看红妆素裹,分外妖娆。122在名目上玩弄词藻,在形式上凑凑热闹,不会比高老夫子改名高尔础更有意义。123气枪震源船……
第19届冬奥会主会场盐湖城参观记那些躲在被子里的猫咪,软萌软萌的任正非最深的忧虑文明信息链的修补偏向元宇宙的科技树Redis传统数据库HBase以及Hive的区别伯奇和斯温纳顿戴尔猜想四维战场探觅电子对抗技术1。5小时完成1万分子虚拟筛选,以超高算力助力中医药研发地球比想象的更危险?巨大火球照亮挪威上空,专家轨迹不同寻常神舟十二号成功发射为什么我们要执着于飞天?走错一步就是末日!日本在台海越猖狂,越说明美国已衰落实施巴山优才计划,创新人才引进机制,提高人才引进的准确性

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找