C++11 右值引用与常量左值引用保存临时变量(函数返回值)的底层分析
右值引用保存临时变量(函数返回值)的问题
:临时变量是右值
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 右值引用与常量左值引用保存临时变量(函数返回值)的底层分析相关推荐
- linux 变量函数返回值,linux shell 自定义函数(定义、返回值、变量作用域)介绍...
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
- C++ ——vector作为函数返回值用法
在实际应用过程中,我们经常需要保存一系列的数据,有可能是一个值,点等,这时我们会用到vector. 如下所示: vector<int> vector<float> 与openc ...
- 【软件开发底层知识修炼】二十五 ABI之函数调用约定二之函数返回值为结构体时的约定
上一篇文章学习了几种函数调用约定的区别,点击链接查看上一篇文章:[软件开发底层知识修炼]二十四 ABI之函数调用约定 本篇文章继续学习函数调用约定中,关于函数返回值的问题.当函数返回值为结构体时,函数 ...
- java方法返回值_如何高效率的学习Java函数返回值
一.概述 函数返回处理值有两种方式,一种直接利用函数返回值返回:另一种通过输出参数返回,一般传入的值为引用或者指针. public Foo Function1(); // 函数返回值的形式 publi ...
- 函数的返回值,C语言函数返回值详解
看旋转编码器程序的时候,遇见了一些关于函数返回值的函数,感觉很懵逼,就百度了一下C语言函数调用,感觉写的挺好的, 原链接:http://c.biancheng.net/view/204.html 通常 ...
- 2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码)
2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码) 1.引用(普通引用) 变量 ...
- 函数返回值的优化技术(RVO和右值引用)
我们先来看一段例子,一个简单的函数返回值场景 #include <iostream> using namespace std; class Moveable { public:Moveab ...
- c++函数返回值是一个引用
函数返回值是一个引用的情况: 1.值是如何被返回的: 返回的值用于初始化调用点的一个临时量,该临时量就是函数调用的结果. 如果函数返回引用,则该引用仅是它所引对象的一个别名. 2.不能返回局部对象的引 ...
- 函数返回值是否使用引用类型的问题:理解引用、返回值
在<对象更有用的玻璃罩--常引用>一文中,介绍了对象作为函数的参数时,推荐使用引用的形式.并且,如果实际参数的值不允许改变时,声明为常引用更佳. 在<第8周-任务1-方案3-复数类中 ...
最新文章
- DeepLearning based on PaddlePaddle系列一
- kaggle研究生招生(上)
- 【无码专区6】球与盒子(数学线性筛)
- sql server 2005 (select查询语句用法)
- 刚刚,阿里宣布开源Flutter应用框架Fish Redux!
- 理论基础 —— 排序 —— 直接插入排序
- 从0到1:微信后台系统的演进之路(转自INFOQ)
- 开发extjs常用的插件
- 1/4-36UNS-2A的螺纹
- Autojs抖音小助手抢红包福袋脚本实战分享
- 实在抵不住张老师的诱惑,又跳坑了
- source deactivate失败,无法退出虚拟环境
- VMware下安装Raspbian树莓派系统
- IMU及磁力计AHRS系统控制(一):传感器物理实现原理
- 软件工程硕士研究生论文撰写事项
- Jenkins卸载方法
- Autolayout - NSLayoutAnchor
- 李成名:科学就是较真 数字城市/智慧城市就是跑马圈地
- ios 往 Library的cache目录下 存放缓存数据的方法
- 蓝牙芯片排行_8月TWS硅麦出货量排行榜TOP15
热门文章
- jenkins修改pom文件_jenkins使用小技巧:pom.xml文件里的版本随着每次发布变化怎么办?...
- vue中使用Ueditor编辑器 -- 1
- 让 Chrome 崩溃的一行 CSS 代码
- 关于Unity实现AR功能(五)摄像头转换与闪光灯开关控制
- android adb源码分析(1)
- 阻塞/非阻塞/同步/异步方法和多线程的关系?没有任何关系,俩不挨着
- Ajax与CustomErrors的尴尬
- 在Windows上,迁移VisualSVN server
- 解析Json需要设置Mime
- struts2学习笔记二--准备struts2的学习和开发环境