当前位置: 首页 > news >正文

【C++】Expression的学习笔记

在这里插入图片描述
关于不同类别表达式的举例,请参考博文《C++ 中的值类别》

1. 左值和右值的简单理解

  • 左值对应了具有内存地址的对象,而右值仅仅是临时使用的值对象。(引用自博文《C++ 中的值类别》)
  • 左值有名称(变量或常量名称),右值是临时对象没有名称

2. lvalue: locator-value

快速判断标准:每次调用此表达式,值所在的地址都一样。

Note
[Arthur O’Dwyer]:
So anything with a name is always an lvalue, regardless.
所以无论如何,任何有名字的对象总是左值。

13.3 rvalue:右值

右值举例:

  • Literals(字面量)ep. 42

13.3.1 右值的特点

  • 无法建立普通引用:因为右值没有合法的固定地址

13.3.2 prvalue: pure right-value

纯右值:prvalue
Cppreference: prvalue examles

prvalue被绑定到引用上时,其生命周期会延长

这里我们参考了博文《现代C++之万能引用、完美转发、引用折叠(万字长文)》中的描述:

[有生命周期延长的情况]:
如果一个 prvalue 被绑定到一个引用上,它的生命周期则会延长到跟这个引用变量一样长。

13.4 Xvalue:亡值

13.5 Xvalue与prvalue的区别

它们的主要区别在于,xvalue表示的对象是可以被移动的,其资源可以被转移到另一个对象中,而prvalue则不能。

13.6 String literal is an lvalue; other literals are rvalues.

C++标准中明确说明了:字符串立即数会被视为左值,而其它立即数则视为右值。

13.7 Rvalue-reference

对于局部变量,std::move产生的右值变量和原始变量共享相同地址

示例:Cpp_var_rref

http://www.lryc.cn/news/8203.html

相关文章:

  • [数据库迁移]-MySQL常见问题
  • C语言编译过程
  • 前端学习 ---常用标签
  • 2023年PMP考试难不难?
  • Netty 入门
  • 收藏|一文掌握数据分析在企业的实际流程
  • 100ask_imx6ull 输出PWM
  • yolov5编译安卓APP:解决图像上全是检测框
  • 为什么我们需要地图?
  • 攻防世界1.新手练习区
  • Python进阶篇(二)-- Django 深入模型
  • ABAP SALV实现弹出ALV选择
  • git check-pick,git patch 与 git stash 详解
  • OA漏洞-到处搜集整理
  • web端接收读卡器卡片信息
  • BUUCTF-练习场-WEB-第一部分(8道)
  • Java Reflection 实战- Class类
  • 背包问题理解思路(01背包、完全背包、分组背包)
  • Mr. Cappuccino的第39杯咖啡——Kubernetes之深入理解Pod
  • SqlSession 和 SqlSessionTemplate 简单使用及注意事项
  • 1. QSaveFile和QFile的简单使用
  • 工业4.0是如何优化垃圾处理行业的
  • vue 动画(transition)
  • Python 爬虫工程师面试经验分享,金三银四
  • MySQL实战篇-MySQL 降配导致的实例宕机
  • 时隔多年,这次我终于把动态代理的源码翻了个地儿朝天
  • 数据分析-深度学习 Tensorflow Day6
  • leaflet 设置多个marker,导出为一个geojson文件(066)
  • 企业与第三方供应商合作时,会存在哪些安全风险?
  • 技术源自洛克希德·马丁,光场XR眼镜FYR解析