设为首页 加入收藏

TOP

C++11新特性之右值引用(一)
2014-07-19 23:05:03 来源: 作者: 【 】 浏览:377
Tags:特性 引用

  在C++中,左值(lvalue)是可以获取其地址的一个量。由于经常出现在赋值语句的左边,因此称之为左值。例如一个有名称的变量。 例如:

  int a=10; //a就是一个左值。

  传统的C++引用,都是左值引用。例如:int &ra=a;将ra关联到a。这就是左值引用。

  C++11,新增了右值引用的概念。用&&代表右值引用。

  首先我们来看一下什么叫做右值。可以说所有不是左值的量都是右值。例如文本,临时对象或者临时值(都是不能获取地址的量)。

  右值引用,就是一个对右值的引用。特别地,这是一个当右值是一个临时对象时使用的概念。例如。

  int &&ra=10;

  10就是一个右值,ra将是10这个右值的引用。看例子:

  [cpp] view plaincopyprint

  #include

  using namespace std;

  int main()

  {

  int &&ra=9;

  cout<<&ra<

  ra=5;

  cout<<&ra<

  cin.get();

  }

  输出结果:

  有趣的是,将右值关联到右值引用将导致该右值被存储到特定的位置,且可以获取该位置的地址。例如,你不能对右值9或者5进行&运算,但是可以对ra进行&运算。

  右值引用的目的是提供一些涉及临时对象时可以选用特定的方法(主要是复制构造函数以及operator=,但并不限于此)。由于知道临时对象会被销毁,通过右值引用,某些涉及复制大量数据的操作可以通过简单地复制指向这些值的指针来实现。

     

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/9/9
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++中如何显式调用构造函数 下一篇C++逆序数与归并排序

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·CPython是什么?PyPy (2025-12-26 06:50:09)
·Python|如何安装seab (2025-12-26 06:50:06)
·python要学习数据分 (2025-12-26 06:50:03)
·每日一道面试题-多线 (2025-12-26 06:20:17)
·java项目中哪些地方 (2025-12-26 06:20:14)