看了一下这种方法的介绍,个人感觉,右值引用,更像人类的思想了,有些将编译前与编译后结合紧密的感觉。
左值引用是变量名的别名,右值引用是值的别名,也就是不将值赋给一个变量名所在的地址,直接将值所在的初始的地址位置,转给右值引用变量名。

这个好比是这样,一个人来图书馆送书,管理员没有将书送到指定的书架,而是在送书地点,直接将书架,架起来,包住这本书。这样的好处,我想只有一点,就是在编译时,节约内存占用,而在编译后的代码中,右值引用变量所在的代码位置上,是立即数,而不是寄存器或是地址值,从而加快了运行速度。

以上全是个人理解。

为什么要用两个&,我现在不清楚,或许是只是为了分清这个操作。

主要是对于编译后,实现了一种指定区域内的,编译后的,类似于宏值功能的inline类立即数功能。也就是将值从调用值转为立即数,加快执行速度。

可以说是用空间换时间的方法,尢其是引用右值是字符串的话,最为名显。

比如,我做个假设,我现在也没用这种编译方法,在一个函数中引入右值参数一个,而引入的实参是一个变量名a,形参是b,当在函数中改写b=10时,a以前如果是20,那这个a=20还是20,不会变成10,而函数中的b引用右值a,改写成10后,再操作就是b=10,不知是不是这样。有时间我再测试。 (这个可能有点乱)

不过这些可能有错,右值引用,用的是最初那个值的地址,反正,后面我说的有点乱,请海涵。

&&又看了一下,右值引用,主要就是对指针的调度,变量名会被毁掉,但内存中的数据不变,保留下来,这样就减少局部变量的复制次数,减少程序的无用操作。

也就是让程序中的数据操作更灵活,不用为了没必要的内存复制而做任何多余的cpu操作。

说白了吧,就是函数里定义的变量,在函数退出后,并不会被毁掉,还存在内存中被右值引用调用它们的地址,操作数据。

现在的编程语言越来越灵活了,这样一来,就更像人的思想了,编译前可以更完美的控制编译后的程序执行操作数据过程,减少无用的操作。

哈,这样一来,java和c#怕是需要大量的改版了,不然速度明显落后C++对机器码的编排灵活性了。

如果用这种方法写出来的操作系统和应用程序,性能提高不是一点的问题,而且程序架构也会大大的进化。

右值引用的出现,对于全局变量的使用,又是一个不小的冲击。可以减少全局变量的使用。

而且,如果以后还有进步的话,全局变量的定义可能会成为历史。

变量的使用会更加的自由,全局变量可能会减少所有不应属于它的工作。

C++进化了多少年,才进化出现在这点,对机器码编排的灵活性,又进了一小步。这也说明,这个功能虽然简单,但是实现的时间是很慢的,几年,几十年,也不一定能实现多少。所以,我更认为我的编程能力,并不差。

其实,等到N年之后,C++或是C++++。。。。。。进化到一定的灵活性后,可能我们那时想想,这是多么的容易,不就是对机器码的编排灵活性么,为什么需要这么多年才能懂得,其实,这就像是现在的我,知道宇宙的一切,但连工作也没有的道理吧。

&&指明是右值引用,我认为,是这样,&变量名 表明这是一个变量名的地址,而&&变量名,表明这是一个变量名的地址的引用,也就是说这个引用,引用了这个变量名所对应的左值的地址的引用。

(图里不是左值,是右值,我打错字了。)

左值引用:左面固定变量名的别名。
右值引用:右面临时值所在的内存地址的别名。

int b=20;

int &a=b;

int &&c=10;

一个是固定值的别名,一个是临时值的别名。

由C++11标准右值引用,看到C++的未来设计路线

1。C++将会出现,操作临时值的地址功能。
2。C++将会出现,操作临时值,并根据临时值的地址来将临时值,起一个固定的变量名的功能。
3。C++将会出现,将临时值,进行数据结构定义的功能。
4。C++将会出现,将临时值,进行常数或类类型定义等的功能。

5。C++将会出现对临时函数指针右值引用,并实现函数的定义的右值引用,实现程序编写程序的功能。
6。C++将会出现对程序入口函数的右值引用定义,实现主程序的改变。
7。C++将会出现对右值引用的右值引用定义,实现程序自己产生创造性的能力。(右值引用,可以被右值引用一个变量,用来自由右值引用。)

从新的右值引用可以看到,这些功能都将会是C++标准的发展方向,这将对机器码的编排更加的灵活,对编译后的数据调度更加的灵活。

这将实现动态的建立变量的功能。
未来计算机语言会向着更加智能的方向发展,计算机自己可以编写面向对像的程序将会慢慢实现。
现在这个发展方向将会产生计算机自己产生常量变量的能力。

未来人类的世界是好是坏,我们无从得之,但这个结果的发展是显而易见的了。

最近新出的C++右值引用的意思的更多相关文章

  1. C++右值引用浅析

    一直想试着把自己理解和学习到的右值引用相关的技术细节整理并分享出来,希望能够对感兴趣的朋友提供帮助. 右值引用是C++11标准中新增的一个特性.右值引用允许程序员可以忽略逻辑上不需要的拷贝:而且还可以 ...

  2. C++ 11 中的右值引用

    C++ 11 中的右值引用 右值引用的功能 首先,我并不介绍什么是右值引用,而是以一个例子里来介绍一下右值引用的功能: #include <iostream>    #include &l ...

  3. 图说函数模板右值引用参数(T&&)类型推导规则(C++11)

    见下图: 规律总结: 只要我们传递一个基本类型是A④的左值,那么,传递后,T的类型就是A&,形参在函数体中的类型就是A&. 只要我们传递一个基本类型是A的右值,那么,传递后,T的类型就 ...

  4. c++11的右值引用、移动语义

    对于c++11来说移动语义是一个重要的概念,一直以来我对这个概念都似懂非懂.最近翻翻资料感觉突然开窍,因此记下.其实搞懂之后就会发现这个概念很简单,并无什么高深的地方. 先说说右值引用.右值一般指的是 ...

  5. VS2012 error C2664: “std::make_pair”:无法将左值绑定到右值引用

    在vs2012(c++)make_pair()改动: C++: template <class T1, class T2> pair<V1, V2> make_pair(T1& ...

  6. 右值引用、move与move constructor

    http://blog.chinaunix.net/uid-20726254-id-3486721.htm 这个绝对是新增的top特性,篇幅非常多.看着就有点费劲,总结更费劲. 原来的标准当中,参数与 ...

  7. 【转】C++11 标准新特性: 右值引用与转移语义

    VS2013出来了,对于C++来说,最大的改变莫过于对于C++11新特性的支持,在网上搜了一下C++11的介绍,发现这篇文章非常不错,分享给大家同时自己作为存档. 原文地址:http://www.ib ...

  8. move语义和右值引用

    C++11支持move语义,用以避免非必要拷贝和临时对象. 具体内容见收藏中的“C++右值引用” .

  9. [转载] C++11中的右值引用

    C++11中的右值引用 May 18, 2015 移动构造函数 C++98中的左值和右值 C++11右值引用和移动语义 强制移动语义std::move() 右值引用和右值的关系 完美转发 引用折叠推导 ...

随机推荐

  1. 怎么去掉iframe的滚动条?

    <iframe name="123" src="YNJD/ynjd.htm" frameborder="0" width=" ...

  2. PHPCMS(2)PHPCMS V9 环境搭建(转)

    转自:http://www.cnblogs.com/Braveliu/p/5072920.html PHPCMS V9的学习总结分为以下几点: [1]PHPCMS 简介 PHP原始为Personal ...

  3. PHP 开启 ssh2

    首先,为PHP安装SSH2扩展需要两个软件包, libssh2和ssh2(php pecl拓展). 两者的最新版本分别为libssh2-1.5.0.tar.gz和ssh2-0.12.tgz,下载地址分 ...

  4. 手机端的META你有多了解?

    我们先来简单了解下meta标签:meta指元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. 标签位于文档的头部,不包含任何内容. 标签的属性定 ...

  5. DEDECMS栏目自定义字段添加

    用到的文件: catalog_add.htm  路径:\dede\templets\ catalog_edit.htm  路径:\dede\templets\  catalog_add.php  路径 ...

  6. [151225] Python3 实现最大堆、堆排序,解决TopK问题

    参考资料: 1.算法导论,第6章,堆排序 堆排序学习笔记及堆排序算法的python实现 - 51CTO博客 堆排序 Heap Sort - cnblogs 小根堆实现优先队列:Python实现 -cn ...

  7. BZOJ 1069 最大土地面积

    Description 在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成的多边形面积最大. Input 第1行一个正整数N,接下来N行,每行2个数x,y ...

  8. Extjs打开window窗口自动加载html网页

    Window inherits the autoLoad config option from Panel. Note that I included all config options below ...

  9. iOS Developer Libray (中文版)-- Defining Classes 定义类

    该篇是我自己学习iOS开发时阅读文档时随手记下的翻译,有些地方不是很准确,但是意思还是对的,毕竟我英语也不是很好,很多句子无法做到准确的字词翻译,大家可以当做参考,有错误欢迎指出,以后我会尽力翻译的更 ...

  10. Unity 弹出界面时屏蔽对3D场景的点击

    注:这里的UI制作用的是NGUI插件 如题,在游戏中经常会遇到这种情况,场景中点击相关物体或者按钮弹出对应的2D界面,这时候除了2D界面上的可点击按钮等,应该屏蔽掉对3D场景的点击或者拖动事件. 在这 ...