c++左值和右值的区别

编程入门 行业动态 更新时间:2024-10-28 17:23:06

c++左值和右值的<a href=https://www.elefans.com/category/jswz/34/1769972.html style=区别"/>

c++左值和右值的区别

在c++ 中左值和右值是表达式的两种类别, 他们的主要区别在于对象的身份可移动性

1. 左值(Lvalue)

左值是指那些表达式结束之后依然存在的对象,他们有明确的持久地址(内存地址) ,通俗来说,左值可以看作一个篮子,即便你往篮子里面放入或者取处之后,篮子(变量)依然存在,你可以多次使用它 。

  • 你可以对左值取地址
  • 左值可以出现在赋值表达式的左边或者右边
  • 函数返回一个非引用类型时,通常返回的是右值,但是如果函数返回一个引用类型是,那么返回的是左值
    比如说, int x = 10 ; x就是一个左值

2. 右值(Lvalue)

右值指的是不具有持久地址的临时对象 , 当表达式结束后他们就不存在了,右值更像手中的苹果,用完之后 , 它就不存在了, 这种临时性质使得它们可以被“移动” , 而不仅仅是被“拷贝”

  • 不能对右值进行取地址
  • 右值只能出现在赋值表达式的右边
  • 字面值 (如 10 , a)返回返回临时对象或表达式生成的临时结果都是右值
    比如 表达式10 , x+ 2 std::string(“hello”) 中的10 x+2 以及通过构造函数生成的字符串都是右值

3.右值和左值的区别

  • 身份: 左值有持久的内存地址, 而右值常常都是临时的
  • 可修改性: 左值可以被重新赋值, 而右值不可以
  • 函数重载:在函数重载中,可以根据参数是左值还是右值选择不同的函数进行实现

更多推荐

c++左值和右值的区别

本文发布于:2023-11-15 05:18:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1594344.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:区别

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!