【C++】c++引用和小细节
文章目录
- 一、
- 引用的特性:
- 引用的实质
- 引用权限
- 使用场景
- 引用和指针的区别
c++引用不是定义了新的对象,而是对一个已有的对象起了一个别名,如鲁迅和周树人的关系,鲁迅是周树人的笔名,两者是一个东西,只是名字不同,正确来讲,编译器不会为了引用变量再开空间,它和它引用的空间使用了同一块内存空间

一、
使用格式:
类型& 引用变量名(对象名)=引用实体
int a=10;//定义实体a
int &b=a;//给实体起别名b
ps:引用类型和实体必须要是同一类型
引用的特性:
引用的特性:
1.引用在定义时必须初始化,这点不同于指针,因为指针可以不赋初值
2.一个变量可以有多个引用,也可以给引用起引用,但它们指向的是同一个实体
3.引用一旦初始化,就不能更改实体对象,这点不同于指针,指针可以更改指向的空间,但引用不可以
引用的实质
引用实际就是给实体对象起别名,如定义 int a = 10;此时系统开辟了一片空间,里面存储了10,a是它的名字,定义int& b = a,就是给这片空间又起了一个小名。

引用权限
1.在c++中我们可以给常量起别名,方式和给变量起别名一样,整数在c++中默认类型为int ,浮点数为double
2.引用时别名的权限不能放大,只能缩小或平移
//权限放大
//vs2019编译器会报错,权限大于了实体
int& a=10;//错误的给常量起别名const int b=10;//定义常变量
int &c=b;//权限平移
//编译器不会报错
const int& a=10const int b=10;
const int&c=b; //权限的缩小
编译器不会报错
int a=10;
const int& b=a;
使用场景
1.引用做参数,以往用函数我们实现swap()一般都要使用指针实现传址传参,但c++的引用可以方便的解决这个问题
void Swap(int& left, int& right)
{int temp = left;left = right;right = temp;
}
2.引用做返回值
int& Count()
{static int n = 0;n++;// ...return n;
}
在函数中,引用不管是做参数或返回值效率一般都会更高,例如
现在有函数实参为一个有10000个节点的链表,那么函数形参需要拷贝这10000个节点,这样会浪费大量空间,这个时候,参数使用引用,就不需要拷贝那么多节点,实参和形参都指向一片地点
引用和指针的区别
- 引用概念上定义一个变量的别名,指针存储一个变量地址。
- 引用在定义时必须初始化,指针没有要求
- 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实体
- 没有NULL引用,但有NULL指针
- 在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32位平台下占4个字节)
- 引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小
- 有多级指针,但是没有多级引用
- 访问实体方式不同,指针需要显式解引用,引用编译器自己处理
- 引用比指针使用起来相对更安全
相关文章:
【C++】c++引用和小细节
文章目录 一、引用的特性:引用的实质引用权限使用场景引用和指针的区别 c引用不是定义了新的对象,而是对一个已有的对象起了一个别名,如鲁迅和周树人的关系,鲁迅是周树人的笔名,两者是一个东西,只是名字不同…...
nginx负载均衡(动静分离)
nginx负载均衡(动静分离) 文章目录 nginx负载均衡(动静分离)工作原理:环境说明:部署nginx负载均衡步骤:在负载均衡(NGINX)主机上做配置:测试:在浏…...
vue自定义全局指令v-emoji限制input输入表情和特殊字符
问题: 后台不提供富文本存储,所以emoji表情入库会报错需求要求前端在输入的时候过滤掉表情符号全局的input 和富文本textarea输入框都需要过滤emoji表情 分析: 1.每一个input写事件写正则校验代码量实在太多了还很麻烦;所以想用…...
Excel 5s内导入20w条简单数据(ExecutorType.BATCH)Mybatis批处理的应用
文章目录 Excel 5s内导入20w条数据1. 生成20w条数据1.1 使用Excel 宏生成20w条数据1.2 生成成功 2. ExecutorType:批量操作执行器类型2.1 ExecutorType.SIMPLE2.2 ExecutorType.BATCH2.3 ExecutorType.REUSE 3. 20w条数据直接插入数据库3.1 使用ExecutorType.SIMPLE…...
【期刊】IEEE系列指定期刊模版下载(LaTeX或者Word)全网最细教程
IEEE旗下有很多期刊,例如: IEEE Transactions on Pattern Analysis and Machine Intelligence IEEE Transactions on Cybernetics IEEE Transactions on Neural Networks and Learning Systems IEEE Transactions on Industrial Informatics IEEE Tra…...
损失函数和评估函数
损失函数和目标函数定义 损失函数是用于衡量模型在训练过程中预测结果与实际结果之间的差异的函数。它通过计算模型的预测值与实际值之间的距离或差异来 quantitatively 表示模型的性能好坏。损失函数通常被用作优化算法(如梯度下降)的目标函数,通过最小化损失函数来调整模…...
第四章 文件管理 四、文件的物理结构(文件分配方式)
目录 一、文件块,磁盘块 二、连续分配 1、定义: 2、计算方式: 3、注意: 4、优点: 5、缺点: 6、总结 三、链接分配----隐式链接 1、定义: 2、如何实现逻辑块号转物理块号 3、优点&…...
解析外贸开发信的结构?营销邮件书写技巧?
做外贸的开发信结构是怎样的?写外贸邮件的注意事项? 外贸开发信是国际贸易中至关重要的一环,它不仅是与潜在客户建立联系的第一步,也是一种有效的市场推广工具。蜂邮EDM将深入解析外贸开发信的结构,帮助您更好地理解如…...
Linux的命令基本格式
因为对服务器来讲,图形界面会占用更多的系统资源,而且会安装更多的服务、开放更多的端口,这对服务器的稳定性和安全性都有负面影响。其实,服务器是一个连显示器都没有的家伙,要图形界面干十么?说到这里&…...
数据库Redis(二):基本数据类型
Redis中采用Key-Value键值对的形式将数据存储在数据库中,首先介绍Redis中针对键Key的操作命名。 Redis键Key相关命令 # 查看当前库所有key keys * # 判断某个key是否存在 exists <key> # 查看你的key是什么类型 type <key> # 删除指定的key数据 …...
mysql第四次作业
目录 数据表介绍 --1.学生表Student(SId,Sname,Sage,Ssex)--SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表Course(CId,Cname,TId)--CId 课程编号,Cname 课程名称,TId 教师编号 --3.教师表Teacher(TId,Tname)--TId 教师编号,Tname 教师姓名 --4.成绩…...
kubesphere 一键部署K8Sv1.21.5版本
1. 在centos上的安装流程 1.1 安装需要的环境 yum install -y socat conntrack ebtables ipset curl1.2 下载KubeKey #电脑必须可以访问github,很重要。不然安装过程会出问题 curl -sfL https://get-kk.kubesphere.io | VERSIONv1.2.1 sh - chmod x kk1.3 开始安…...
设计模式(12)状态模式
参考【设计模式】用Java实现状态模式_java 状态模式_卷帘的博客-CSDN博客 一、介绍: 1、状态模式:是一种行为设计模式,它允许对象在内部状态发生改变时改变其行为。该模式将对象的行为包装在不同的状态类中,使得对象的行为可以根…...
C#WPFPrism框架模块化应用实例
本文实例演示C#WPFPrism框架模块化应用实例。 首先创建WPF项目,修改App相关文件内容,以便使用prism。 一、添加模块 解决方案中添加ModuleA和ModuleB两个项目 删除不用的窗体,添加自定义窗体 修改ModuleA和ModuleB的输出类型...
ES6之Set集合(通俗易懂,含实践)
Set是什么?它的方法有哪些?它在实例开发中有什么作用? 让我为大家介绍一下吧! ES6提供了新的数据结构 Set(集合) 。它类似于数组,但成员的值是唯一的,常用于数组去重。 创建方法: let s new S…...
深度学习标注工具(包括自动标注)总结——持续更新
首次记录日期2023年10月24日 名称 导出格式支持形状地址1 anylabeling 支持yolov5和v8,自动标注的软件 沿物体轮廓分割 https://github.com/vietanhdev/anylabeling 2 RectLabel 使用Core ML模型自动标记图像 对象、属性、热键和快速标签的设置。 以PASCAL VOC …...
阿里云核心产品list
计算: 01函数计算(Function Compute)全托管serverless计算服务,不需要管理服务器等基础设施,只需要编写代码并上传。 02云服务器(Elastic Compute Service)云计算服务 03GPU云服务(G…...
矢量图形编辑软件 illustrator 2023 mac 中文软件特点
illustrator 2023 mac是一款矢量图形编辑软件,用于创建和编辑排版、图标、标志、插图和其他类型的矢量图形。 illustrator 2023 mac软件特点 矢量图形:illustrator创建的图形是矢量图形,可以无限放大而不失真,这与像素图形编辑软…...
vue按特定字符串切割后端传输的图片路径
一、分隔字符 /userfiles/1/attachment/null/2023/10/13967b6b8332413f92ab67735873aa76.jpg|/userfiles/1/attachment/null/2023/10/17fd6e2c16144e66b8cd3ec495e6745f.png 后端传来图片的路径是按照 | 进行分隔的 首先在return中定义数组 在methods中添加分隔方法 //将查询…...
Spring底层原理(三)
Spring底层原理(三) Bean的生命周期 SpringBootApplication public class Application {public static void main(String[] args) {ConfigurableApplicationContext context SpringApplication.run(Application.class, args);context.close();} }Slf4j Component public cla…...
2026年八大上门服务预约小程序:解锁高效生活新体验
本文围绕上门服务预约小程序展开系统性梳理,聚焦2026年市场上主流的八家服务商,包括好赞科技、厦门亿点通科技、福州启帆数字科技等。内容覆盖核心功能解析、场景适配性、用户体验及服务效率等关键维度,旨在帮助用户理解不同平台的差异化优势…...
【NS-3实战指南】NetAnim可视化调试与网络拓扑分析
1. NetAnim入门:从安装到第一个动画 第一次接触NS-3仿真的人往往会被命令行输出的数字搞得头晕眼花。记得我刚开始做无线网络仿真时,盯着终端里不断跳动的数据包统计数字,完全想象不出节点之间到底是怎么通信的。直到发现了NetAnim这个神器&a…...
当SuperPoint遇上C++ LibTorch:手把手教你将PyTorch视觉模型部署到生产环境(避坑实录)
SuperPoint与LibTorch的C工程化实战:从Python研究到生产部署的深度解析 在计算机视觉领域,PyTorch因其灵活性和易用性成为研究人员的首选框架,但当模型需要部署到生产环境时,C的高效性和稳定性往往成为必选项。本文将深入探讨如何…...
Linux|操作系统|zfs文件系统的使用详解
一、 前言概述 书接上回,https://zskjohn.blog.csdn.net/article/details/160741859 Linux|操作系统|最新版openzfs编译记录,上文将zfs文件系统编译安装完毕了,也做了一些总结,但总结的不够全面,本文在做一些补充&am…...
量子纠错与Floquet码:动态编码与ZX演算实践
1. 量子纠错与Floquet码基础量子纠错码是构建容错量子计算机的核心技术。与传统纠错码不同,量子态具有不可克隆特性,使得量子纠错必须采用特殊方法。稳定子码(Stabilizer Codes)是目前最成熟的量子纠错方案,通过测量多…...
VMware Unlocker终极指南:在Windows/Linux上运行macOS虚拟机
VMware Unlocker终极指南:在Windows/Linux上运行macOS虚拟机 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 想要在Windows或Linux电脑上体验苹果macOS系统吗?无论你是开发者需要…...
【NotebookLM新闻传播研究权威指南】:20年传媒技术专家亲授AI驱动的新闻生产新范式
更多请点击: https://kaifayun.com 第一章:NotebookLM新闻传播研究导论 NotebookLM 是 Google 推出的基于大型语言模型的实验性研究助手,专为信息整合、溯源验证与知识重构设计。其核心能力在于对用户上传的文档(PDF、TXT、网页…...
tmphw16tc47
AgentMDT协作:多学科会诊前的信息整理能不能先交给 AI MDT 会诊前,技术系统最容易被抱怨的不是“模型不够聪明”,而是病历、检验、用药、既往记录分散在不同系统里,人工整理耗时且容易遗漏。本文只讨论技术架构和工程流程示例&am…...
CodeWF.Markdown:一个基于 Avalonia 12 的 Markdown 渲染控件
今天这篇文章,站长来聊聊我最近基本开发完成的 CodeWF.Markdown。这是一个基于 C# Avalonia 12 Markdig 做的 Markdown 渲染控件。它最早来自 CodeWF.AvaloniaControls,后来我把 Markdown 相关代码单独拆成了一个仓库和一组 NuGet 包:渲染控…...
从10G到40G/50G:UltraScale+以太网IP核升级实战与GT资源规划
1. 从10G到40G/50G的升级挑战 当你第一次把项目从10G升级到40G/50G以太网时,最直观的感受就是"资源突然不够用了"。我去年接手一个视频处理项目时就深有体会——原本在10G环境下游刃有余的FPGA设计,切换到40G后GT资源立刻捉襟见肘。这里说的GT…...
