• 右值引用


    右值和右值引用

    右值,即可出现在赋值表达式右边,但不能对其应用地址运算符的值。右值包括字面常(C-风格字符手除外,它表示地址)、诸如x+y等表达式以及返回值的函数(条件是该函数返回的不是引用):
    C++11新增了右值引用,这是使用&&表示的。右值引用可关联到右值。

    int x = 10;
    int y = 23;
    int && r1 = 13;
    int && r2 = x + y;
    double && r3 = std::sqrt(2.0);
    

    注意,r2关联到的是当时计算x+y得到的结果。也就是说r2关联到的是23,即使以后修改了x或y,也不会影响到r2
    有趣的是,将右值关联到右值引用导致该右值被存储到特定的位了置,也可以取该位置的地址,也就是说虽然不能将运算符&用于13,但可将其用于r1,通过将数据与特定的地址关联,使得可以通过右值引用来访问该数据。

    #include <iostream>
    inline double f(double tf)(return 5. 0*(tf-32.0/9.0;);
    int main()
    {
    	using namespace stdi
    	double tc=21.5;
    	double && rd1 = 7.07;
    	double && rd2=1.8 * tc + 32.0;
    	double && rd3=f(rd2);
    	cout <<"tc value and address: " << tc << "," << &tc <<endl;
    	cout <<"rd1 value and address: " << rd1 << "," << &rd1 <<endl;
    	cout <<"rd2 value and address: " << rd2 << "," << &rd2 <<endl;
    	cout <<"rd3 value and address: " << rd3 << "," << &rd3 <<endl;
    
    	cin.get();
    	return 0;
    }
    
    

    该程序的输出如下
    tc value and address: 21. 5, 002FF744
    rd1 value and address: 7.07, 002FF728
    rd2 value and address: 70.7. 002FF70C
    rd3 value and address: 21.5 002FF6F0

    引入右值引用的主要目的之一是实现移动语义。

    您的资助是我最大的动力!
    金额随意,欢迎来赏!

  • 相关阅读:
    python全栈开发_day48_bootstrap
    python全栈开发_day47_js,jQuery
    python全栈开发_day46_html文本标签
    抽象集合
    ViewState的用法
    sql(join中on与where区别)
    微软的技术文档链接地址
    微软的帮助文档,详细的介绍VS开发工具的使用
    [摘录]解决C# DateTime去掉时分秒几种方法
    验证(摘录)
  • 原文地址:https://www.cnblogs.com/Corphish/p/8805557.html
Copyright © 2020-2023  润新知