Modern C++ 学习笔记 -- 左值与右值
💡
原文中文,约4500字,阅读约需11分钟。
📝
内容提要
左值和右值是Modern C++中引入的新概念,左值位于等号左边,右值位于等号右边。C++中引入了左值引用和右值引用的概念,右值引用配合std::move可以实现移动语义,完美转发可以保持参数的属性不变。
🎯
关键要点
- 左值和右值是Modern C++中的新概念,左值位于等号左边,右值位于等号右边。
- 左值可以进行取地址操作,而右值(如字面常量)不能。
- 左值可以隐式转换为右值,但右值不能转换为左值。
- 左值引用只能指向左值,右值引用只能指向右值。
- 通过const关键字,左值引用可以指向右值,但不能修改其值。
- 右值引用用&&表示,可以修改其指向的右值。
- 左右值引用的引入是为了避免拷贝,提升性能。
- std::move将左值转换为右值,配合右值引用实现移动语义。
- 完美转发允许在方法间转发参数及其属性,使用std::forward实现。
- std::forward根据参数类型转换为左值或右值,确保正确的重载调用。
➡️