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