当前位置: 首页 > news >正文

C++右值引用,右值引用与const引用的区别

1.右值与左值

  • 左值:可以取地址的、有名字的变量,有持久性;
  • 右值:一般是不可寻址的常量,或在表达式求值过程中创建的无名临时对象,短暂性的。

2.右值引用

C++11新增了另一种引用——右值引用。这种引用可指向右值,使用&&声明。

右值引用只能引用临时变量和常量值。

int main()
{double a = 15.2;//double& a1 = a * 2 + 10.2;//错误,不能引用临时变量double&& ra = a * 2 + 10.2;//右值引用,合法//double& b1 = sqrt(100);//错误,不能引用常量double&& rb = sqrt(100);//合法cout << ra << "," << rb << endl;return 0;
}

3.const引用与右值引用的区别

  • const引用:可以引用普通左值、const左值、右值,但不能修改const引用的值。
  • 右值引用:不能引用左值,只能引用右值,但右值引用的值可以修改。
int main()
{//const引用int a = 10;const int ca = 20;const int& b = a;//const引用,引用普通左值const int& c = ca;//const引用,引用const左值const int& d = 30;//const引用,引用右值cout << b << "," << c << "," << d << endl;//b=100;//报错,不能修改const引用的值//右值引用//int&& e = a;//报错,右值引用,不能引用左值//int&& f = ca;//报错,右值引用,不能引用const左值int&& g = 30;//右值引用,引用右值g = 300;//右值引用,值可以修改cout << g << endl;//300return 0;
}

http://www.lryc.cn/news/280393.html

相关文章:

  • 启英泰伦推出「离线自然说」,离线语音交互随意说,不需记忆词条
  • Vulnhub-DC1
  • 【c++笔记】总结!c++与c语言的不同之处
  • 大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning
  • VMware vSphere运维管理手册
  • 学习笔记-mysql-各种函数的基本使用
  • DD小桔高级数分 2面挂
  • 居中面试问题
  • 网页设计-用户体验
  • docker应用:vocechat
  • linux 02 vmware的快照,文件管理
  • 项目架构之Zabbix部署
  • RocketMQ源码阅读-Message消息存储
  • 《C语言学习》---郝斌版---笔记
  • Python(32):字符串转换成列表或元组,列表转换成字典小例子
  • CentOS 7 安装私有平台OpenNebula
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • 基于STM32微控制器的四轮智能小车控制系统设计
  • JPA的复杂查询包括一对多多对一和多对多的查询
  • 电脑文件mfc100u.dll丢失的解决方法分析,怎么修复mfc100u.dll靠谱
  • 从DETR到Mask2former(2): 损失函数loss function
  • Java21 + SpringBoot3集成WebSocket
  • 鲸鱼优化算法WOA改进预告
  • Nightingale 夜莺监控系统 - 告警篇(3)
  • 【LeetCode2696】删除子串后的字符串最小长度
  • VMware安装CentOS7虚拟机
  • Linux第22步_安装CH340驱动和串口终端软件MobaXterm
  • Elasticsearch 地理空间搜索 - 远超 OpenSearch
  • USB micro输入口中三个问题详解——差分信号、自恢复保险丝SMD1210P050TF、电容滤波
  • mysql原理--undo日志1