C++----左值、右值、将亡值

文章介绍了C++中的值类型分类,包括左值、右值和将亡值的概念,以及它们在表达式中的行为。左值是可以取地址的,如变量;纯右值包括字面常量;将亡值是临时对象或计算过程中的结果。此外,讨论了类类型在返回值时产生将亡值的情况,以及不同类型的引用,如左值引用和右值引用的作用。

目录

值类型

左值

纯右值

将亡值

类类型


值类型

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){}
//万能引用

左值引用,常性左值引用,右值引用,常性右值引用(没有使用场景,归结到常性左值引用)

类类型

自己设计的包装类,值返回的时候会产生一个将亡值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值