请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于移动语义

增加移动构造和移动赋值,似乎也就是对使用std::move的包装类型进行了重载复制构造和赋值运算。
但大多场景下,不论是深拷贝还是浅拷贝,都应该是想要保留两份的,即:要么共享一个对象,但要求不能重复释放,要么复制一份新的对象。移动语义无非就是指针的转移,随手写一个函数都能实现,有什么意义呢?

正在回答 回答被采纳积分+3

1回答

quickzhao 2022-08-18 20:50:14

不对,你对move语义的理解是片面的。C++中函数结束时本地对象即被销毁,返回一个指向本地对象的引用属于未定义行为。在 C++11 之前,返回一个本地对象意味着这个对象会被拷贝,除非编译器发现可以做返回值优化能把对象直接构造到调用者的栈上。但 C++11 开始,返回值优化仍可以发生,但在没有返回值优化的情况下,编译器将试图把本地对象移动出去,而不是拷贝出去;这时使用move语义就是一个非常好的选择。 

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号