采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
增加移动构造和移动赋值,似乎也就是对使用std::move的包装类型进行了重载复制构造和赋值运算。 但大多场景下,不论是深拷贝还是浅拷贝,都应该是想要保留两份的,即:要么共享一个对象,但要求不能重复释放,要么复制一份新的对象。移动语义无非就是指针的转移,随手写一个函数都能实现,有什么意义呢?
不对,你对move语义的理解是片面的。C++中函数结束时本地对象即被销毁,返回一个指向本地对象的引用属于未定义行为。在 C++11 之前,返回一个本地对象意味着这个对象会被拷贝,除非编译器发现可以做返回值优化能把对象直接构造到调用者的栈上。但 C++11 开始,返回值优化仍可以发生,但在没有返回值优化的情况下,编译器将试图把本地对象移动出去,而不是拷贝出去;这时使用move语义就是一个非常好的选择。
登录后可查看更多问答,登录/注册
一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维
1.6k 12
1.5k 12
1.8k 10
1.5k 9
1.4k 9
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号