C++ 泛型编程(四)—— 右值引用

本文详细介绍了C++中的右值引用,解释了其如何延长临时对象的生命周期,并讨论了移动语义的重要性,旨在减少资源浪费并提升性能。此外,还探讨了完美转发的概念及其在函数模板中的应用,以此实现更高效、灵活的参数传递。

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

1. 左值与右值

c++中所有的值必然属于左值、右值之一,左值表示表达式结束后持久化存在的对象,而右值表示表达式结束后就不复存在的临时对象,判断左右值的简单方法:如果可以对表达式取地址,即为左值,否则为右值

2. 右值引用

右值引用的实质:是为一个即将消亡的临时对象取一个别名,从而扩展其生存期。

int&& a = 1; //实质上就是将不具名(匿名)变量取了个别名
int b = 1;
int && c = b; //编译错误! 不能将一个左值复制给一个右值引用
class A 
{
   
public:
	int a;
};
A getTemp()
{
   
    return A();
}
A && a = getTemp();   //getTemp()的返回值是右值(临时变量)

getTemp()返回的右值本来在表达式语句结束后,其生命也就该终结了(因为是临时变量),而通过右值引用,该右值又重获新生,其生命期将与右值引用类型变量a的生命期一样,只要a还活着,该右值临时变量将会一直存活下去。实际上就是给那个临时变量取了个名字。

注意:这里a的类型是右

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值