右值引用保存临时变量(函数返回值)的问题

:临时变量是右值

1、普通变量接收函数返回值:

2、右值引用变量接收函数返回值:

3、用const int& 和右值引用是一样的效果,只是const int& 就不可以修改这个临时变量而已

4、用int& 就不行,这是左值引用,就会提示类型不对:
error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’
int& constRef = add(x);

结论:

无论是用右值引用还是普通变量保存返回值,最终在函数返回时都是通过eax(寄存器)保存的。

区别在于:
1、普通变量:就直接将eax赋值给普通变量
2、右值引用:就将eax的值放到另一个位置(临时变量),然后再将这个位置的地址赋值到右值引用上。
3、常量左值引用: 和右值引用是一样的效果,只是常量左值引用就不可以修改这个临时变量而已
(所以函数返回值的临时变量不是一直存在的,要看返回时用什么类型的变量来接收)

C++11 右值引用与常量左值引用保存临时变量(函数返回值)的底层分析相关推荐

  1. linux 变量函数返回值,linux shell 自定义函数(定义、返回值、变量作用域)介绍...

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...

  2. C++ ——vector作为函数返回值用法

    在实际应用过程中,我们经常需要保存一系列的数据,有可能是一个值,点等,这时我们会用到vector. 如下所示: vector<int> vector<float> 与openc ...

  3. 【软件开发底层知识修炼】二十五 ABI之函数调用约定二之函数返回值为结构体时的约定

    上一篇文章学习了几种函数调用约定的区别,点击链接查看上一篇文章:[软件开发底层知识修炼]二十四 ABI之函数调用约定 本篇文章继续学习函数调用约定中,关于函数返回值的问题.当函数返回值为结构体时,函数 ...

  4. java方法返回值_如何高效率的学习Java函数返回值

    一.概述 函数返回处理值有两种方式,一种直接利用函数返回值返回:另一种通过输出参数返回,一般传入的值为引用或者指针. public Foo Function1(); // 函数返回值的形式 publi ...

  5. 函数的返回值,C语言函数返回值详解

    看旋转编码器程序的时候,遇见了一些关于函数返回值的函数,感觉很懵逼,就百度了一下C语言函数调用,感觉写的挺好的, 原链接:http://c.biancheng.net/view/204.html 通常 ...

  6. 2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码)

    2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码) 1.引用(普通引用) 变量 ...

  7. 函数返回值的优化技术(RVO和右值引用)

    我们先来看一段例子,一个简单的函数返回值场景 #include <iostream> using namespace std; class Moveable { public:Moveab ...

  8. c++函数返回值是一个引用

    函数返回值是一个引用的情况: 1.值是如何被返回的: 返回的值用于初始化调用点的一个临时量,该临时量就是函数调用的结果. 如果函数返回引用,则该引用仅是它所引对象的一个别名. 2.不能返回局部对象的引 ...

  9. 函数返回值是否使用引用类型的问题:理解引用、返回值

    在<对象更有用的玻璃罩--常引用>一文中,介绍了对象作为函数的参数时,推荐使用引用的形式.并且,如果实际参数的值不允许改变时,声明为常引用更佳. 在<第8周-任务1-方案3-复数类中 ...

最新文章

  1. DeepLearning based on PaddlePaddle系列一
  2. kaggle研究生招生(上)
  3. 【无码专区6】球与盒子(数学线性筛)
  4. sql server 2005 (select查询语句用法)
  5. 刚刚,阿里宣布开源Flutter应用框架Fish Redux!
  6. 理论基础 —— 排序 —— 直接插入排序
  7. 从0到1:微信后台系统的演进之路(转自INFOQ)
  8. 开发extjs常用的插件
  9. 1/4-36UNS-2A的螺纹
  10. Autojs抖音小助手抢红包福袋脚本实战分享
  11. 实在抵不住张老师的诱惑,又跳坑了
  12. source deactivate失败,无法退出虚拟环境
  13. VMware下安装Raspbian树莓派系统
  14. IMU及磁力计AHRS系统控制(一):传感器物理实现原理
  15. 软件工程硕士研究生论文撰写事项
  16. Jenkins卸载方法
  17. Autolayout - NSLayoutAnchor
  18. 李成名:科学就是较真 数字城市/智慧城市就是跑马圈地
  19. ios 往 Library的cache目录下 存放缓存数据的方法
  20. 蓝牙芯片排行_8月TWS硅麦出货量排行榜TOP15

热门文章

  1. jenkins修改pom文件_jenkins使用小技巧:pom.xml文件里的版本随着每次发布变化怎么办?...
  2. vue中使用Ueditor编辑器 -- 1
  3. 让 Chrome 崩溃的一行 CSS 代码
  4. 关于Unity实现AR功能(五)摄像头转换与闪光灯开关控制
  5. android adb源码分析(1)
  6. 阻塞/非阻塞/同步/异步方法和多线程的关系?没有任何关系,俩不挨着
  7. Ajax与CustomErrors的尴尬
  8. 在Windows上,迁移VisualSVN server
  9. 解析Json需要设置Mime
  10. struts2学习笔记二--准备struts2的学习和开发环境