C++中如何实现左值引用和右值引用

C++中如何实现左值引用和右值引用

这篇文章主要讲解了“C++中如何实现左值引用和右值引用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中如何实现左值引用和右值引用”吧!

1、左值和右值的概念

左值是可以放在赋值号左边可以被赋值的值;左值必须要在内存中有实体;
右值当在赋值号右边取出值赋给其他变量的值;右值可以在内存也可以在CPU寄存器。
一个对象被用作右值时,使用的是它的内容(值),被当作左值时,使用的是它的地址。

2、引用

引用是C++语法做的优化,引用的本质还是靠指针来实现的。引用相当于变量的别名。

引用可以改变指针的指向,还可以改变指针所指向的值。
引用的基本规则:

声明引用的时候必须初始化,且一旦绑定,不可把引用绑定到其他对象;即引用必须初始化,不能对引用重定义;
对引用的一切操作,就相当于对原对象的操作。

3、左值引用和右值引用

3.1 左值引用

左值引用的基本语法:type &引用名 = 左值表达式;

3.2 右值引用

右值引用的基本语法type &&引用名 = 右值表达式;

右值引用在企业开发人员在代码优化方面会经常用到。

右值引用的“&&”中间不可以有空格。

#include<iostream>usingnamespacestd;intmain(){cout<<"-------引用左值--------"<<endl;inta=5;int&add_a(a);cout<<"a="<<a<<""<<"&a="<<&a<<endl;cout<<"add_a="<<add_a<<""<<"&add_a="<<&add_a<<endl;cout<<"-----------------------"<<endl;cout<<"-------引用右值--------"<<endl;intb=10;int&&add_b(b+1);cout<<"b="<<b<<""<<"&b="<<&b<<endl;cout<<"add_b="<<add_b<<""<<"&add_b="<<&add_b<<endl;add_b++;cout<<"add_b++="<<add_b<<""<<"&add_b++="<<&add_b<<endl;cout<<"-----------------------"<<endl;system("pause");return0;}

运行结果

其实对于左值还是很好理解的,主要是对于右值是不好理解的,特别是代码的16行处:右值的例子。C++之所以设计出右值引用的语法,主要是因为对于类似b+1;这样的运算是发生在CPU寄存器上的,就不能对其取地址、赋值等操作,所以这类运算只能放在等号的右边,将其赋给其他的变量。若等号右边出现:&b,这样的操作是,也是右值,因为取地址符的操作也是在寄存器中完成的。所以不能作为左值。

感谢各位的阅读,以上就是“C++中如何实现左值引用和右值引用”的内容了,经过本文的学习后,相信大家对C++中如何实现左值引用和右值引用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是恰卡编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

发布于 2022-04-15 22:35:17
收藏
分享
海报
0 条评论
63
上一篇:c++中如何构建一个先序二叉树 下一篇:C++中如何判断主机是否处于联网状态
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码