c++右值引用、移动语义、完美转发

鼠扑  金牌会员 | 2023-12-9 03:03:15 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 940|帖子 940|积分 2820

1. 左值、右值、左值引用以及右值引用


  • 左值:一般指的是在内存中有对应的存储单元的值,最常见的就是程序中创建的变量
  • 右值:和左值相反,一般指的是没有对应存储单元的值(寄存器中的立即数,中间结果等),例如一个常量,或者表达式计算的临时变量
  1. int x = 10
  2. int y = 20
  3. int z = x + y
  4. //x, y , z 是左值
  5. //10 , 20,x + y 是右值,因为它们在完成赋值操作后即消失,没有占用任何资源
复制代码

  • 左值引用:C++中采用 &对变量进行引用,这种常规的引用就是左值引用
  • 右值引用:右值引用最大的作用就是让一个左值达到类似右值的效果(下面程序举例),让变量之间的转移更符合“语义上的转移”,以减少转移之间多次拷贝的开销。右值引用符号是&&。
例如,对于以下程序,我们要将字符串放到vector中,且我们后续的代码中不再用到x:
[code]std::vector vec;std::string x = "abcd";vec.push_back(x);std::cout
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

鼠扑

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表