最近由于工作需要,我阅读了很多关于C++右值方面的材料。并结合我的一些实践经验,得出了下面十条总结。
- C++右值有两种:纯右值、将亡值。
- 右值引用的一个作用是延长右值的生命周期
- 临时对象作为右值处理
- 移动构造函数尽可绑定右值非常量
- 对于一个右值对象,允许调用成员函数
- 右值可以被修改(这也说明了其可以被破坏)
- 右值不能当作左值使用,左值可以当作右值使用。
- 常量左值引用可以绑定到右值
- 返回右值引用的函数在几乎所有情况下是糟糕的
- 在大部分情况下return中使用是std::move并不会将事情变得更好,相反该操作会阻止编译器进行返回值优化。