专栏首页基础知识文章什么是右值引用?跟左值有什么关系?

什么是右值引用?跟左值有什么关系?

右值引用

右值引用是C++11中引入的新特性 , 它实现了转移语义和精确传递。

  • 它的主要目的有两个方面:
  1. 消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率。
  2. 能够更简洁明确地定义泛型函数。
左值和右值的概念:
  • 左值:能对表达式取地址、或具名对象/变量。一般指表达式结束后依然存在的持久对象。
  • 右值:不能对表达式取地址,或匿名对象。一般指表达式结束就不再存在的临时对象。
右值引用和左值引用的区别:
  1. 左值可以寻址,而右值不可以。
  2. 左值可以被赋值,右值不可以被赋值,可以用来给左值赋值。
  3. 左值可变,右值不可变(仅对基础类型适用,用户自定义类型右值引用可以通过成员函数改变)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C++入门知识(二)

    用这种方式声明的引用,不能通过引用对目标变量的值进行修改,从而使引用的目标成为const,达到了引用的安全性。

    海盗船长
  • 线程(四)线程池的实现+线程的单例模式

    一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时...

    海盗船长
  • 线程(一)线程概念+线程控制

    pthread_t 到底是什么类型呢?取决于实现。对于Linux目前实现的NPTL实现而言,pthread_t类型的线程ID,本质就是一个进程地址空间上的一个地...

    海盗船长
  • C++の表达式(2)

    今天,我们继续接着昨天的说,昨天说到了C++中表达式的左值与右值,由于时间关系就没有详细说完整。今天我们继续补充一下。

    leoay
  • 二叉树问题(四)-LeetCode 502、543、637、606、114、979(最大堆,IPO)

    假设 力扣(LeetCode)即将开始其 IPO。为了以更高的价格将股票卖给风险投资公司,力扣 希望在 IPO 之前开展一些项目以增加其资本。由于资源有限,它只...

    算法工程师之路
  • Binary Tree Level Order Traversal II

    问题:输出二叉树的每一行的结点,从叶子到根 /** * Definition for binary tree * struct TreeNode { * ...

    用户1624346
  • LeetCode Maximum Depth of Binary Tree题目分析代码

    Given a binary tree, find its maximum depth.

    desperate633
  • 【Leetcode】二叉树的最小深度

    这题和【LeetCode】二叉树的最大深度很相似,我都是采用递归求解(流下了菜鸡的泪水)。我一开始撸出来的代码WA啦,[1,2]这个测试用例,我输出的最小深度是...

    喜欢ctrl的cxk
  • Leetcode 222. Count Complete Tree Nodes

    版权声明:博客文章都是作者辛苦整理的,转载请注明出处,谢谢! https://blog.csdn....

    Tyan
  • python基础--创建自己的包

    创建一个文件夹:mymath,在该文件夹下创建三个python 文件,分别为:__init__.py getMax.py getMin.py

    我被狗咬了

扫码关注云+社区

领取腾讯云代金券