C++11新标准の右值引用

It's insane / 2025-01-25 / 原文

一、什么是左值、右值?

专业的说法:

  • 左值是指表达式结束后依然存在的持久化对象;
  • 右值是指表达式结束后就不再存在的临时对象。
    通俗的说法:有名字的对象都是左值,右值没有名字。

区分左右值得便捷方法:看能不能对表达式取地址,如果能,则为左值,否则为右值

Tips: C++11把右值分为纯右值和将亡值。不懂纯右值和将亡值的区别其实没关系,统一看作右值即可,不影响使用。

二、左右值引用

左值引用就是给变量取个别名;
右值引用就是给右值取个名字。 语法:数据类型&& 变量名=右值;
⭐ 总结一下,其中T是一个具体类型:

  1. 左值引用, 使用 T&, 只能绑定左值。
  2. 右值引用, 使用 T&&, 只能绑定右值。
  3. 已命名的右值引用是左值。
  4. 常量左值,使用 const T&, 既可以绑定左值又可以绑定右值。

问:为什么要引入右值?

答:为了实现移动语义