首页 > 编程语言 >c++ 右值引用

c++ 右值引用

时间:2023-10-10 21:46:21浏览次数:32  
标签:10 右值 int 左值 c++ 引用

左值和右值

左值可以理解为可以取地址的对象,右值指的除左值外的值,这个地方不必过于纠结

左值引用

就是常见的 &+变量名

右值引用

当引用一个变量时可以使用

int A=10;
int & a=A;//这里就是左引用

但是有时我们需要引用一个立即数怎么办

int &a=10;//error
const int &a=10;//right,这里是常引用,这里是把这个10临时保存到内存中,随着程序到期后一起销毁

当c++加入右值引用后,可以把上面的操作变成

int && a=10;

右值引用可以进行读写操作,而常引用只能进行读操作。
右值引用的存在并不是为了取代左值引用,而是充分利用右值(特别是临时对象)的构造来减少对象构造和析构操作以达到提高效率的目的。

标签:10,右值,int,左值,c++,引用
From: https://www.cnblogs.com/ruoxingruocheng/p/17755816.html

相关文章

  • c++对象模型学习笔记
    参照大佬的博客学习了一下c++的对象模型:https://www.cnblogs.com/skynet/p/3343726.html有些思考需要做下记录。对于有虚函数表的类的对象,它的起始地址处会存储vptr指向虚函数表,在这个虚函数表的前4或8字节中,会存储一个地址值,指向RTTI类型信息对于没有虚函数表的类的对象,也就......
  • html引用远程js脚本
    html引用远程js脚本varscript=document.createElement('script');script.src='https://example.com/remote-script.js';document.head.appendChild(script);script.addEventListener('load',function(){//远程脚本加载完成后执行的代码conso......
  • ansible的host几种编写样式以及引用方式
    借用的,https://www.cnblogs.com/chengxuyonghu/p/13763561.htmlAnsiblehosts文件配置IP的方式第一种IP+A/C示例如下:192.168.0.10ansible_ssh_user=“vagrant”ansible_ssh_pass=“vagrant”第二种nickname+IP+A/Ctestserveransible_ssh_host=192.168.0.10ansible_s......
  • C++ libwebsockets搭建WebSocket服务端及Http客户端、服务端
    https://blog.csdn.net/fantasysolo/article/details/88908948  概念WebRTCWebRTC,名称源自网页即时通信(英语:WebReal-TimeCommunication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联......
  • C++测试技能
    googletest?gtestdoetest?doctest的引入和编译问题。编译和引入、api的使用会影响测试开发的体验功能是否丰富(对模板等测试)影响到测试的结果  这里的两个subcase的执行是并行的,都是先从头去执行一次vector的构造然后再挑选一个subcase进入TEST_CASE("vectorscanbesi......
  • C++11之类型转换(2千字长文详解)
    C++11之类型转换C语言中的类型转换在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型转换和显式类型转换。隐式类型转化:编译器在编译阶段自动进行,能转就......
  • 【C++ Primer】变量和基本类型
    目录二、变量三、复合类型四、const限定符五、处理类型六、自定义数据结构一、基本内置类型 1、算术类型分为整形和浮点型,常见的算术类型:char:1个字节,short:2个字节,int:2个字节,long:4个字节,float:4个字节,double:8个字节,longlong【c++11】:8个字节。可寻址的最小内存块称为“字节(byte)”,......
  • 【C++ Primer】表达式
    一、基础1、左值和右值:当一个对象被用作右值的时候,用的是对象的值(内容);当对象用作左值的时候,用的是对象的身份(在内存中的位置)。   需要用到左值的地方有:赋值运算符需要一个左值作为其左侧运算对象,得到的结果也是左值。取地址符作用与左值对象,返回的指针是右值。解引用和下标运算......
  • 【C++ Primer】字符串和数组
    一、命名空间的using声明1、using声明:usingnamespace::name,例如:usingstd::cin。一旦声明了上述语句,就可以直接访问命名空间的变量。每个变量都需要using声明,位于头文件中的代码不应该使用using声明。2、using编译:usingnamespacestd;直接使用整个命名空间。使用using声明比使用us......
  • 【C++ Primer】语句
     一、简单语句1、使用空语句时应该加上注释,从而令读这段代码的人知道该语句是有意省略的。2、程序块不以分号结束(但是类要以分号结束)。二、语句作用域1、可以在if、switch、while、for语句内定义变量(变量是临时的),在语句结束后变量就不起作用了,所以这些变量要初始化。三、条件语......