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

C++的值类型(左值,右值,亡值,泛左值,纯右值)

C++的值类别

img
C++的值的类型,基本可以分为左值,亡值,纯右值,泛左值,右值五种类型。

lvalue

平常我们说的左值就是lvalue,左值一般是指,可以在内存中长久存在的值,可以被取地址。

  1. 一切具有名字的变量,不论类型如何,例如std::cinstd::endl。即使变量的类型是右值引用,由其名称组成的表达式也是一个lvalue表达式;
  2. 返回类型为左值引用的函数调用或重载运算符表达式;
  3. a = ba += b以及所有其他内置赋值和复合赋值表达式;
  4. ++a--a,内置的前置增量和前置减量表达式;
  5. 下标表达式arr[1]和解引用*ptr;

prvalue

纯右值是最简单的右值形式,它通常代表一个临时对象、常量或一个常量表达式。

  1. 字面量(不包括字符串字面量),例如41falsenullptr
  2. this指针、枚举、内置的取地址表达式&a
  3. 运算表达式中间值,如a + ba && ba == b
  4. 一些返回值:
    4.1 函数调用或重载运算符表达式,其返回类型为非引用(值类型);
    4.2 a++a--,内置的后置运算;
  5. 「lambda 表达式」例如 [](int x){ return x * x; };

xvalue

将亡值表示一个即将被销毁的对象的资源,通常出现在转移资源的场景中。

  1. std::move()返回的右值引用;
  2. std::static_cast<T&&>()返回的右值引用;

glvalue

也称作「广义左值」是lvaluexvalue的结合,也就是所有拥有实体的值。

rvalue

prvaluexvalue的组合,也就是我们常说的右值,右值表示临时对象或者表达式结果,通常不持有内存位置。

http://www.jsqmd.com/news/29245/

相关文章:

  • CF1730D Prefixes and Suffixes
  • 工具---短视频下载神器
  • 使用iptables双重DNAT
  • ABC430
  • 团队作业1——团队展示选题-大学生健康生活管理与预警系统
  • 广告投放名词
  • 自定义Linux 备份命令 backup 【from claude.ai Haiku 4.5】
  • 打造你自己的 Linux 备份命令:快速、高效、易用 【from claude.ai Haiku 4.5】
  • CVE-2025-12176漏洞分析:未记录的管理账户安全风险
  • 信安中级考试备忘
  • pdf下载网站
  • 量子力学作业 4
  • 区间颜色类问题
  • 【URP】Unity[后处理]色彩调整ColorAdjustments
  • [LangChain] Runnable接口 - 1
  • MySQL 巡检用户创建脚本(Python 版)
  • 初识目标检测
  • MySQL 8.0 双密码机制:改密码不中断业务,无缝切换的安全方案
  • 记录Vmware WorkStation下安装的ESXi DCUI下 Resolving Hostname失败
  • 【为美好CTF献上祝福】python 逆向
  • MySQL参数优化最佳实践
  • 班级任务数据采集与融合实验第二次报告
  • Java方法——递归
  • 2025 年 11 月氨糖软骨素厂家哪家好?剂型优化与人群适配双维度测评推荐
  • 论文应该这样读(How to Read a Paper)
  • 各省市车牌号记忆 测试游戏
  • 2025年11月氨糖软骨素厂家哪家好?原料溯源与临床效果双维度优选推荐
  • range()
  • 2025 年 11 月氨糖软骨素厂家哪家好?提纯工艺与长效养护双核心测评推荐
  • 2025 年 11 月氨糖软骨素厂家哪家好?成分配比与吸收技术双维度测评推荐