什么是左值和右值
左值是真正有地址的有名字的值,可以长期保存,右值是临时存放数值的值
右值引用
ep:int&& r = 10; // r 引用到字面量 10(右值)
右值引用是 C++11 引入的,主要是为了解决 性能优化 问题,尤其是移动语义 (move semantics),没有右值引用的时候就是纯复制,有了之后就是string s1 = "hello"; string s2 = std::move(s1); // 移动(直接“窃取”s1的资源)。还可以延长周期,一个右值是在一行语句结束的时候就结束了如果是一个临时变量,如果引用(const string& ref 或 string&& ref)绑定它,编译器会 延长这个右值的生命周期 —— 直到这个引用的作用域结束