返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中左值和右值的区别是什么
  • 684
分享到

C++中左值和右值的区别是什么

2023-06-29 00:06:59 684人浏览 独家记忆
摘要

今天给大家介绍一下c++中左值和右值的区别是什么。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。左值右值定义:左值指的是既能够出现在等号左边也能出现在等号右边的

今天给大家介绍一下c++中左值和右值的区别是什么。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。

左值右值定义:

左值指的是既能够出现在等号左边也能出现在等号右边的变量(或表达式),右值指的则是只能出现在等号右边的变量(或表达式).

int a;int b;a = 1;b = 2;a = b;b = a;a + b =  3; // 非法表示

右值分为纯右值和将亡值:

纯右值:临时变量和不跟对象关联的字面量值

将亡值:在确保其他变量不再被使用或即将销毁时,通过盗取的方式,可以避免内存空间的释放和分配,能够延长变量值的生命期。右值通常不具有名字,也只能通过引用的方式找到它的存在。

特性

首先, 对于基础类型,右值是不可被修改的(non-modifiable),也不可被 const, volatile 所修饰(cv-qualitification ignored)

其次,对于自定义的类型(user-defined types),右值却允许通过它的成员函数进行修改。

自定义类型应该设计得和内置类型尽量一样(所谓 value type,value semantic),但允许成员函数改变右值这个特性却有意无意使得自定义类型特殊化了。
对此,我们其实可以这样想:自定义类型允许有成员函数,而通过右值调用成员函数是被允许的,但成员函数有可能不是 const 类型,因此通过调用右值的成员函数,也就可能会修改了该右值

左值引用, 右值引用

引用类型本身并不拥有所绑定对象的内存,只是该对象的一个别名。

左值引用是具名变量值的别名,右值引用是不具名(匿名)变量的别名。

常量左值引用是个万能引用类型,可接受常量左值(带有const),非常量左值和右值对其初始化。常量左值引用的右值在其生命期内只能是只读的

C++中左值和右值的区别是什么

E.g.1

int &a = 2;       # 左值引用绑定到右值,编译失败int b = 2;        # 非常量左值const int &c = b; # 常量左值引用绑定到非常量左值,编译通过const int d = 2;  # 常量左值const int &e = c; # 常量左值引用绑定到常量左值,编译通过const int &b =2;  # 常量左值引用绑定到右值,编程通过

E.g.2

int a;int &&r1 = c;             # 编译失败int &&r2 = std::move(a);  # 编译通过

以上就是C++中左值和右值的区别是什么的全部内容了,更多与C++中左值和右值的区别是什么相关的内容可以搜索编程网之前的文章或者浏览下面的文章进行学习哈!相信小编会给大家增添更多知识,希望大家能够支持一下编程网!

--结束END--

本文标题: C++中左值和右值的区别是什么

本文链接: https://lsjlt.com/news/321552.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++中左值和右值的区别是什么
    今天给大家介绍一下C++中左值和右值的区别是什么。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。左值右值定义:左值指的是既能够出现在等号左边也能出现在等号右边的...
    99+
    2023-06-29
  • C++中左值和右值的区别详解
    目录左值右值定义:特性左值引用, 右值引用总结左值右值定义: 左值指的是既能够出现在等号左边也能出现在等号右边的变量(或表达式),右值指的则是只能出现在等号右边的变量(或表达式). ...
    99+
    2024-04-02
  • 详解C++中的左值,纯右值和将亡值
    目录引入一.表达式二.值类别三.左值四.纯右值五.将亡值六.注意引入 C++中本身是存在左值,右值的概念,但是在C11中又出现了左值,纯右值,将亡值得概念;这里我们主要介绍这些值的概...
    99+
    2024-04-02
  • C++ 函数左侧值引用和右侧值引用参数的区别
    c++++中左侧和右侧值引用参数的不同之处如下:左侧值引用 (&) 指向已有对象,用于修改其状态。右侧值引用 (&&) 指向临时对象,用于获取或传递其数据。 C...
    99+
    2024-04-19
    参数 函数 引用 c++
  • C语言中什么是左值引用与右值引用
    这篇文章主要介绍“C语言中什么是左值引用与右值引用”,在日常操作中,相信很多人在C语言中什么是左值引用与右值引用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言中什么是左值引用与右值引用”的疑惑有所帮助!...
    99+
    2023-06-16
  • C++中左值与右值的概念与应用方法是什么
    这篇文章主要讲解了“C++中左值与右值的概念与应用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中左值与右值的概念与应用方法是什么”吧!什么是左值与右值?左值(Lvalue)...
    99+
    2023-07-05
  • C语言入门篇--变量的左值和右值
    目录1.普通变量2.指针变量2.1初步理解2.2深入理解在看此块内容前可以先看看内存及地址相关内容,更容易理解。 1.普通变量 一个变量是有三个属性: 1.变量的空间。 2.变量的内...
    99+
    2024-04-02
  • MySQL中左连接/右连接/等值连接有什么区别
    这篇文章给大家分享的是有关MySQL中左连接/右连接/等值连接有什么区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。从业以来,发现很多技术人员和同事向笔者或是在网络上咨询过LE...
    99+
    2024-04-02
  • C++中初始化和赋值的区别是什么
    这篇文章给大家介绍C++中初始化和赋值的区别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。对于基本数据类型差别不大:比如:int a = 12; // initi...
    99+
    2023-06-17
  • C++11怎么用static_cast将左值转换为右值
    这篇文章主要讲解了“C++11怎么用static_cast将左值转换为右值”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++11怎么用static_cast将左值转换为右值”吧!使用std...
    99+
    2023-06-19
  • C++ 函数左值和右值参数传递的性能比较
    左值和右值参数传递的性能差异左值参数传递存在副本开销,降低性能,尤其是对于大型对象。右值参数传递避免副本开销,提升性能,尤适用于临时对象或字面量。 C++ 函数左值和右值参数传递的性能...
    99+
    2024-04-21
    左值 右值参数 c++
  • 一篇文章弄懂C++左值引用和右值引用
    目录1. 左值和右值 2. 左值引用 3. 右值引用 3.1 出现 3.2 概念 3.3 应用 3.3.1 右值引用绑定到左值上 3.3.2 std::move()本质 3.3.3 ...
    99+
    2024-04-02
  • C++中传值、传地址和传引用的区别是什么
    小编给大家分享一下C++中传值、传地址和传引用的区别是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!传引用定义传值与传地址,相信大家都了如指掌了,在这里先介绍...
    99+
    2023-06-20
  • MySQL中左链接和右链接有什么区别?
    本篇文章主要探讨MySQL中左链接和右链接的区别。有一定的参考价值,有需要的朋友可以参考一下,跟随小编一起来看解决方法吧。首先创建两个新表,数据如下:student 表数据:score 表数据:可以看到st...
    99+
    2024-04-02
  • sql中左连接和右连接有什么区别
    在SQL中,左连接(LEFT JOIN)和右连接(RIGHT JOIN)是连接两个表的一种方式,它们的区别在于连接的方向和结果集的形...
    99+
    2023-10-23
    sql
  • sql中左链接和右链接有什么区别
    左链接保留左表行,右链接保留右表行。左链接在右表没有匹配行的左表行中填充 null,而右链接在左表没有匹配行的右表行中填充 null。 SQL 中左链接和右链接的区别 在 SQL 中,...
    99+
    2024-05-02
  • MySQL的空值和NULL的区别是什么
    这篇文章给大家分享的是有关MySQL的空值和NULL的区别是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。从本质上区别:1、空值不占空间2、null值占空间通俗的讲:空值就像...
    99+
    2024-04-02
  • mysql左连接和右连接有什么区别
    本篇文章为大家展示了mysql左连接和右连接有什么区别,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、区别左连接,以左表为参照,显示所有数据,右表中没有则以null显示右连接,以右表为参照显示数据...
    99+
    2023-06-14
  • C/C++值传递和址传递有什么区别
    这篇文章主要为大家展示了“C/C++值传递和址传递有什么区别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C/C++值传递和址传递有什么区别”这篇文章吧。C/C++的按值传递和按地址传递有明显不...
    99+
    2023-06-25
  • sql中的左连接和右连接的区别
    sql 中左连接和右连接的区别在于优先连接的表:左连接优先连接左表,而右连接优先连接右表。因此,当处理包含 null 值的表时,左连接将确保返回左表中的所有行,而右连接将确保返回右表中的...
    99+
    2024-05-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作