当前位置: 首页 > news >正文

c++左值与右值(自写)

左值:具有地址,存储在内存中

可以出现在赋值号=的左侧

可以取地址&

变量,对象,数组元素都是左值

右值:通常没有地址,存储在寄存器或临时内存中(如果是亡值(左值使用std::move变为右值),可能有地址)

不能出现在赋值号=的左侧

不能取地址&

字面量,表达式计算结果都是右值

变量就是地址的别名

引用是变量的别名,引用是通过指针来实现的

左值引用:

int a=10;

int& b=a;

右值引用:

const int &&b=20;,

右值引用,b是对右值20的引用,实际上这个b在内部也是一个指针,相当于一个指针指向了这个20,只不过这个20没有”家“,没有地址

所以先要把20搬到一个临时住所,放到栈里面

再让指针指向这个临时住所,右值引用就是右值的临时变量

move移动语义,move的作用就是将左值转换为右值

const int &&c=std::move(a);

目的是:让这个c在传递参数或者赋值的时候,触发移动构造,避免深拷贝

比如说这个

string str1="Hello";

string str2=str1;//不加move,触发移动构造,深拷贝,两个都是"Hello",如果字符串特别长,拷贝会浪费很多资源

http://www.dtcms.com/a/467171.html

相关文章:

  • 保定网站建设的过程ui设计包括什么
  • 网站和数据库工业园网站建设
  • NAS 上的轻量级 RSS 阅读器,支持多种提要,还能自动嗅探
  • 怎么进行网站维护怎么建自己的网址
  • NNDL 作业三
  • 【第三方网站代码登记测试_HTTP头语法代码详解】
  • 怎样建设网站卖农产品dede网站地图制作
  • 【双机位A卷】华为OD笔试之【模拟】双机位A-新学校选址【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
  • 变化型网站网站开发公司 网站空间
  • TDengine 数学函数 ASIN() 用户手册
  • Mysql初阶第五讲:Mysql基本查询
  • 百讯科技网站建设小米应用商店下载
  • 西青集团网站建设wordpress获取网址
  • 做网站 360的好不好公司介绍文案
  • 中英文网站前端怎么做页游源码论坛
  • asp.net程序做的网站安全吗江苏 江苏省住房和城乡建设厅网站
  • 用vs2010做免费网站模板下载地址怎么查询百度收录情况
  • 哪些品牌的实验室移液器值得推荐?如何选择合适的品牌?
  • 网站建设方案图房地产项目营销策划方案
  • 网站制作视频教程新手必看海南建设培训与执业中心网站
  • 购物优惠券网站怎么做深圳网域官网
  • 温州建设银行官方网站西部数码网站管理助手v3.0
  • EHOME视频平台EasyCVR构建全协议、全场景融合的视频监控中枢
  • [数据结构]堆
  • 网站开发应聘问题我想找工作没学历
  • 网站建设指导人员优化方案
  • 基于单片机的±5V数字电压表设计
  • 海口网站建设好做网络推广网站有哪些
  • 天马G前端(TODO)
  • 建立自己网站免费贵州省建设厅网站造价工程信息网