编程语言
首页 > 编程语言> > C++新特性探究(13.5):右值引用

C++新特性探究(13.5):右值引用

作者:互联网

在这里插入图片描述
运行结果:
在这里插入图片描述
附上例代码:

//小问学编程
//左值:在内存中有确切位置的值
//右值:是一个暂时存在的值
#include <iostream>
using namespace std;

int main()
{
	int a(10);//a在内存中有地址,数据是10
	int b(11);//b在内存中有地址,数据是11

	int c=a+1;//&(a+1)没有内存地址,是一个临时的值,是一个右值。仅短暂存在于寄存器中
	int d=a+2;//

	int&  f=c;  //左值引用&——是对内存值的引用
	int&& g=a+3;//右值引用&&——是对暂时存在值的引用

	cout<<"在左值引用前:c="<<c<<endl;
	f=55;
	cout<<"在左值引用后:c="<<c<<endl;
	//可以通过修改左值引用f的值来间接修改内存中c的值,但不可以通过修改右值引用g的值来修改a+3的值
	//因为a+3是一个暂时存在的值,它不存在于内存之中。右值引用和左值引用的目的是完全不一样的
	//右值引用的目的是:快速备份(它不需要去访问内存),节约内存
	//使用右值引用不需要额外开辟内存空间,并且编译器会对右值引用的值自动做一个优化,当右值引用不再
	//使用时,编译器会自动回收g这块内存的数据从而达到节约内存的目的
	
	return 0;
}

标签:11,右值,int,左值,C++,引用,13.5,内存
来源: https://blog.csdn.net/weixin_43297891/article/details/113797459