C++右值引用,右值引用与const引用的区别

1.右值与左值

  • 左值:可以取地址的、有名字的变量,有持久性;
  • 右值:一般是不可寻址的常量,或在表达式求值过程中创建的无名临时对象,短暂性的。

2.右值引用

C++11新增了另一种引用——右值引用。这种引用可指向右值,使用&&声明。

右值引用只能引用临时变量和常量值。

int main()
{
	double a = 15.2;
	//double& a1 = a * 2 + 10.2;//错误,不能引用临时变量
	double&& ra = a * 2 + 10.2;//右值引用,合法
	//double& b1 = sqrt(100);//错误,不能引用常量
	double&& rb = sqrt(100);//合法
	cout << ra << "," << rb << endl;

	return 0;
}

3.const引用与右值引用的区别

  • const引用:可以引用普通左值、const左值、右值,但不能修改const引用的值。
  • 右值引用:不能引用左值,只能引用右值,但右值引用的值可以修改。
int main()
{
	//const引用
	int a = 10;
	const int ca = 20;
	const int& b = a;//const引用,引用普通左值
	const int& c = ca;//const引用,引用const左值
	const int& d = 30;//const引用,引用右值
	cout << b << "," << c << "," << d << endl;
	//b=100;//报错,不能修改const引用的值
	
	//右值引用
	//int&& e = a;//报错,右值引用,不能引用左值
	//int&& f = ca;//报错,右值引用,不能引用const左值
	int&& g = 30;//右值引用,引用右值
	g = 300;//右值引用,值可以修改
	cout << g << endl;//300

	return 0;
}

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值