目录
值类型
C++表达式可按照两个独立的属性加以辨别:类型和值类别,且每一个表达式只属于三个基本值类型中的一种:左值,右值,将亡值,每个值类别都与某种引用类型对应。值类别如下:

左值(lvalue)和将亡值(xvalue)合称泛左值,将亡值(xvalue)和纯右值(pvalue)合称右值(rvalue)。
左值
能够用&取地址的表达式就是左值表达式
int main()
{
int a=10;
int ip=&a;//此时a就是一个左值,因为它可以被取地址&
}
int main()
{
int a;
const int* p;
&a; //true
&p; //true
"hello";
nullptr;
10;
&"hello"; //err
&nullptr; //err
&10; //err
}
纯右值
就是字面常量(10,nullptr,12.34等就是纯右值),只可读不可写
将亡值
在表达式的运行或者计算过程中所产生的临时量或者临时对象,称为将亡值;临时量有可能是字面值,也有可能是一个不具名的对象。
将亡值具名就是左值,不具名就是右值,不具名的内置类型将亡值是纯右值
void func(const Int&&c){}
//万能引用
左值引用,常性左值引用,右值引用,常性右值引用(没有使用场景,归结到常性左值引用)
类类型
自己设计的包装类,值返回的时候会产生一个将亡值
文章介绍了C++中的值类型分类,包括左值、右值和将亡值的概念,以及它们在表达式中的行为。左值是可以取地址的,如变量;纯右值包括字面常量;将亡值是临时对象或计算过程中的结果。此外,讨论了类类型在返回值时产生将亡值的情况,以及不同类型的引用,如左值引用和右值引用的作用。

758

被折叠的 条评论
为什么被折叠?



