C++纯右值和将亡值区别
C++纯右值和将亡值区别
看了好多帖子总结和分析得出以下:
1.纯右值:函数返回值在没被使用前称纯右值
将亡值:函数返回值赋给别的变量后,是将亡值。
将亡值可以理解为通过移动构造其他变量内存空间的方式获取到的值
2.std::move()函数会强制将左值转化为右值引用,如果要作为初始化类的参数,需要手动定义类的移动构造函数,否则还是会调用拷贝构造函数
https://blog.csdn.net/ShenHang_/article/details/105713347
3.c++11 引入move和forward是为了解决什么问题?
move是为解决临时变量赋值时,临时变量拷贝完又释放。
forward为了解决模板函数参数类型重载问题(https://shaoyuan1943.github.io/2016/03/26/explain-move-forward/)
个人感觉从业前10年是用不到forward,是不是自己太菜了,不需要写模板函数,还是因为没有业务场景?