const用于C++引用(注意事项)

news/2024/5/20 13:55:16/文章来源:https://blog.csdn.net/qq_41701723/article/details/131204563

const用于C++引用

  • 存在的问题
  • 解决方法
  • 原理

存在的问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

左值是可以被引用的数据对象,可以通过地址访问它们,例如:变量、数组元素、结构体成员、引用和解引用的指针。

非左值包括字面常量(用双引号包含的字符串除外)和包含多项的表达式。

解决方法

在形参前面加上const约束
在这里插入图片描述
可以看到指针变量还是不能直接赋值,引用变量可直接赋值了
在这里插入图片描述

原理

我们之前对引用的理解是:数据类型 &引用名=原变量名;
但,为什么加上const后,可以:const 数据类型&引用名 = 非左值(常量)

原因如下:

如果引用的数据对象类型不匹配,当引用为const时,C++将创建临时变量,让引用指向临时变量。

也可以这样理解:

如果函数的实参不是左值或与const引用形参的类型不匹配,那么C++将创建正确类型的匿名变量,将实参的值传递给匿名变量,并让形参来引用该变量。

	const int& a = 5;cout << "等效于" << endl;int b = 5;const int& a = b;
  1. 使用const可以避免无意中修改数据的编程错误。
  2. 使用const使函数能够处理const和非const实参,否则将只能接受非const实参。
  3. 使用const,函数能正确生成并使用临时变量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_694646.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国家版权局正版化检查工具添加自定义检查软件及问题处理

使用国家版权局正版化检查工具进行软件正版化检查时&#xff0c;根据各个单位购买的正版化软件的不同&#xff0c;需要将自购软件和禁用软件增加到检查清单&#xff0c;本文件介绍添加自定义检查软件的方法及问题处理。 一、检查清单文件介绍及修改方法 国家版权局正版化检查工…

CentOS阿里镜像源

阿里CentOS镜像源位置&#xff1a;http://mirrors.aliyun.com/centos/?spma2c6h.25603864.0.0.50d03715CS95s4 CentOS下载最小位置&#xff1a; https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/?spma2c6h.25603864.0.0.5e38f5advNCSXC 如图&#xff1a;

华为OD机试真题 JavaScript 实现【火星文计算】【2022Q2 100分】,附详细解题思路

一、题目描述 已知火星人使用的运算符为#、$&#xff0c;其与地球人的等价公式如下&#xff1a; x#y 2*x3*y4 x$y 3*xy2 其中x、y是无符号整数&#xff1b;地球人公式按C语言规则计算&#xff1b;火星人公式中&#xff0c;$的优先级高于#&#xff0c;相同的运算符&#x…

索引介绍和基本使用

介绍 索引就是用来加速SQL查询的 由于索引也是需要存储成索引文件的&#xff0c;因此对索引的使用也会涉及磁盘I/O操作。如果索引创建过多&#xff0c;使用不当&#xff0c;会造成SQL查询时&#xff0c;进行大量无用的磁盘I/O操作&#xff0c;降低了SQL的查询效率&#xff0c…

相机标定实战之双目标定

相机标定原理 文章目录 相机标定原理前言一、采集图像二、基于Matlab单双目标定流程采集棋盘图 三、基于OpenCV-Python双目标定流程检测棋盘格角点对角点进行亚像素精细化单目标定双目标定双目校正保存标定参数读取标定参数代码示例 参考 前言 相机标定可以说是计算机视觉/机器…

【链表复习】C++ 链表复习及题目解析 (2)

目录 牛客 CM11 链表分割 牛客 OR36 之链表的回文结构 Leetcode 160. 相交链表 LeetCode 141. 环形链表 LeetCode 138. 复制带随机指针的链表 本文继续延续前文&#xff0c;为大家带来几道经典的链表中等难度的题目。 牛客 CM11 链表分割 现有一链表的头指针 ListNode* p…

7--Gradle进阶 - settings.gradle的文件说明

7--Gradle进阶 - settings.gradle的文件说明 前言 介绍 settings.gradle 文件之前&#xff0c;先来说明一下&#xff0c;settings.gradle 主要是用来多模块工程使用的。 所以我们先来创建一个多模块的工程。 多模块工程创建 1. 创建 root 工程 1.1 配置本地 Gradle 1.2 配置依赖…

怎么把图片放大不改变清晰度,给大家介绍两个方法

时代的发展和进步&#xff0c;我们在使用手机、电脑等设备时&#xff0c;常常需要对图片进行放大操作。从功能上来说&#xff0c;图片放大可以让我们更好地观看和理解图片内容&#xff0c;同时也可以提高图像分辨率和清晰度&#xff0c;以满足不同的需求和场景首先&#xff0c;…

WDM波分复用技术:TFF(薄膜滤波) AWG(阵列波导光栅)介绍

WDM &#xff08;Wavelength Division Multiplexing&#xff09;技术是通过在光纤中传输多个不同波长的光信号来扩大光纤传输带宽并提高网络传输能力的一种技术&#xff0c;而TFF(薄膜滤波)和AWG&#xff08;阵列波导光栅&#xff09;则是两种常用的WDM技术。 TFF技术 TFF &a…

object类clone、finalize

2 什么是API API&#xff08;Application Programming Interface&#xff0c;应用程序接口&#xff09;是一些预先定义的函数。目的是提供应用程序与开发人员基于某软件可以访问的一些功能集&#xff0c;但又无需访问源码或理解内部工作机制的细节. API是一种通用功能集,有时公…

自动驾驶专题介绍 ———— 激光雷达标定

文章目录 介绍激光雷达与激光雷达之间的外参标定激光雷达与摄像头的标定 介绍 激光雷达在感知、定位方面发挥着重要作用。跟摄像头一样&#xff0c;激光雷达也是需要进行内外参数标定的。内参标定是指内部激光发射器坐标系与雷达自身坐标系的转换关系&#xff0c;在出厂之前就已…

【道友避坑】CUB数据集转yolov5格式

写在前面&#xff1a;最近我拿到一个CUB_200_2011鸟类训练模型&#xff0c;但是我想将他转为yolov的格式进行应用。看了些其他博主博客后&#xff0c;发现跳跃性有些强。再此记录转换过程&#xff0c;希望各位道友修得此法后&#xff0c;能有所收获&#xff01; 一、获取数据集…

为什么年龄越大工作失误越多水平越低能力越差-个人案例

此为内容创作模板&#xff0c;在发布之前请将不必要的内容删除 在日复一日的工作中&#xff0c;我们免不了会产生一些失误&#xff0c;会因此感到沮丧和失望。但如何正确地对待和处理这些失误才是最重要的&#xff0c;它直接影响到我们的工作表现和个人成长。一起来谈谈作为职…

信贷产品的贷前获客营销策略搭建

在竞争激烈的信贷市场中&#xff0c;有效的贷前获客营销策略对于吸引潜在借款人、提高转化率以及保持客户忠诚度至关重要。本文将分享一些关于信贷产品贷前获客营销策略搭建的基本框架和经验分享&#xff0c;希望能对大家有所启发。 1、市场调研和目标客户定义 在制定贷前获客…

使用Unity开发一个游戏类型的区块链 [独立区块链]

ArouseBlockchain [Unity独立区块链] 这是一个学习性质的项目&#xff0c;使用了Unity进行独立区块链游戏的开发。 徽章维护者如何贡献使用许可 项目说明 关于本项目的使用说明 背景安装使用说明 生成器 区块链简述 区块链的基础知识简述 背景 未来趋势 区块链未来趋势的…

【什么是iMessage推送,im群发】苹果推iMessage是苹果公司为其设备用户提供的即时通讯服务

iMessage是苹果公司为其设备用户提供的即时通讯服务&#xff0c;拥有一系列强大的功能和特点。然而&#xff0c;至今为止&#xff0c;苹果并未提供官方的群发部署功能。iMessage主要被设计为点对点的通信工具&#xff0c;即用户可以与一个或多个人进行私密的聊天对话。以下是关…

VMware Workstation 17 的安装

一、简介 VMware Workstation 17.0是一款功能非常强大的虚拟机&#xff0c;可以帮助用户在Windows系统上同时开启多个系统&#xff0c;不仅能在虚拟机上安装上不同的操作系统&#xff0c;比如Mac、Linux以及Windows10/11等&#xff0c;还能与云技术和容器技术&#xff08;如 D…

SpringCloud Eureka注册服务提供者(七)

这里我们在原来的服务提供者项目 microservice-student-provider-1001 上面直接修改&#xff1a; 首先pom.xml修改&#xff0c;加上eureka客户端依赖&#xff1a; <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>…

1.7C++流插入运算符重载

C流插入运算符重载 在 C 中&#xff0c;流插入运算符&#xff08;<<&#xff09;用于输出数据到流中的运算符&#xff0c;流插入运算符可以被重载&#xff0c;使得程序员可以自定义输出对象的方式。 重载流插入运算符的一般形式如下&#xff1a; 其中&#xff0c;T 是…

运维(SRE)成长之路-第1天 搭建虚拟机(图示)

1.Linux安装前准备 虚拟机&#xff1a;用软件&#xff08;如&#xff1a;vmware,virtualbox等&#xff09;模拟硬件,方便实验的灵活配置 虚拟化软件&#xff0c;建议使用 Vmware Workstation 虚拟硬件配置 CPU&#xff1a;2核或更多 内存&#xff1a;1G以上&#xff0c;推荐2…