C++ -- 值类型

本文深入探讨C++11中右值引用的概念及其前置知识点——值分类。详细解析左值(lvalue)、xvalue、泛化左值(glvalue)、右值(rvalue)与纯右值(prvalue)的定义与区别,帮助读者理解不同表达式的值分类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++11中很重要的一个概念就是右值引用,而右值引用的前置知识点就是关于值类型的讨论。

表达式可以根据以下的术语分类:

lvalue, 左值指明一个函数或对象。举例而言,如果E是指针类型的表达式,那么*E就是指向了对象或函数的一个左值。另一个例子是,调用一个返回值是左值的结果依旧是一个左值。

xvalue, 它也指向一个对象,通常已经接近了它生存期的结束。(这样一来,它的资源即将被移动)xvalue是包含了右值引用特定类型表达式的结果。(例子:调用返回值为右值引用的结果是一个xvalue)

glvalue, generalized lvalue, 是指更泛化意义上的左值,包含了以前的一部分右值。即lvalue和xvalue的集合。

rvalue, 可以是一个xvalue, 一个临时对象,或临时对象的子对象,或者是一个没有和对象关联的值。

prvalue, pure right value, 纯右值,即不是xvalue的rvalue (举例:调用函数返回值并不是引用类型的结果是一个纯右值。字面量12.7, 3e5, 或者true, 都是纯右值。)

每个表达式都会严格属于某个基础类型。表达式的这种特性被称为是值分类

 

节选自如下文章:

A Taxonomy of Expression Value Categories

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值