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

引用的特点

引用

引用的特性

1.引⽤在定义时必须初始化

int &ra;//未初始化这里会报错

2.⼀个变量可以有多个引⽤

int a = 10; int& b = a; //int &c; int& d = b;

3.引⽤⼀旦引⽤⼀个实体,再不能引⽤其他实体

#define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> using namespace std; int main() { int a = 10; int& b = a; //int &c; int& d = b; int e = 20; //这里并非是让d引用e,因为C++中引用不可以改变指向 //所以这里是赋值 d = e; cout << &a << endl; cout << &b << endl; cout << &d << endl; cout << &e << endl; return 0; }

引用是否可以代替指针?

不可以,比如在一个链表中A->B->C,我要删除元素B,这时候我需要把A的指向下一个节点指向C,C的指向前一个节点的指针指向A,但是引用不可以改变其指向,所以引用不能代替指针

引⽤的使⽤

• 引⽤在实践中主要是于引⽤传参和引⽤做返回值中减少拷⻉提⾼效率和改变引⽤对象时同时改变被引⽤对象。

• 引⽤传参跟指针传参功能是类似的,引⽤传参相对更⽅便⼀些。

• 引⽤返回值的场景相对⽐较复杂,我们在这⾥简单讲了⼀下场景,还有⼀些内容后续类和对象章节中会继续深⼊讲解。

• 引⽤和指针在实践中相辅相成,功能有重叠性,但是各有特点,互相不可替代。C++的引⽤跟其他语⾔的引⽤(如Java)是有很⼤的区别的,除了⽤法,最⼤的点,C++引⽤定义后不能改变指向,Java的引⽤可以改变指向。

• ⼀些主要⽤C代码实现版本数据结构教材中,使⽤C++引⽤替代指针传参,⽬的是简化程序,避开复杂的指针,但是很多同学没学过引⽤,导致⼀头雾⽔。

指针和引⽤的关系

C++中指针和引⽤就像两个性格迥异的亲兄弟,指针是哥哥,引⽤是弟弟,在实践中他们相辅相成,功能有重叠性,但是各有⾃⼰的特点,互相不可替代。

• 语法概念上引⽤是⼀个变量的取别名不开空间,指针是存储⼀个变量地址,要开空间。

• 引⽤在定义时必须初始化,指针建议初始化,但是语法上不是必须的。

• 引⽤在初始化时引⽤⼀个对象后,就不能再引⽤其他对象;⽽指针可以在不断地改变指向对象。

• 引⽤可以直接访问指向对象,指针需要解引⽤才是访问指向对象。

• sizeof中含义不同,引⽤结果为引⽤类型的⼤⼩,但指针始终是地址空间所占字节个数(32位平台下占4个字节,64位下是8byte)

• 指针很容易出现空指针和野指针的问题,引⽤很少出现,引⽤使⽤起来相对更安全⼀些。

http://www.jsqmd.com/news/84745/

相关文章:

  • SolidWorks零件连接方式介绍
  • 【计算机网络笔记】第五章 网络层的控制平面
  • 百度网盘提取码智能获取工具完整使用指南
  • Day 34 模块和库的导入
  • 【SSM戒烟网站】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
  • 百度网盘智能提取码解决方案:技术驱动的自动化访问新体验
  • Flutter与DevEco Studio结合开发简单项目实战指南
  • 单例设计模式
  • Flutter开发基石:Dart语言从入门到实战核心指南
  • 【论文阅读】Multi-modal Spatial Clustering for Spatial Transcriptomics Utilizing High-resolution Histology
  • Flutter+DevEco Studio实战:简易天气查询工具开发指南
  • 构词与词根-2025年
  • 【牛客周赛 107】E 题【小苯的刷怪笼】题解
  • 基于Springboot医疗健康服务系统【附源码+文档】
  • 最强更新!西储大学(CWRU)轴承数据集保姆级教程!
  • 你,宇宙唯一的中心:在无限复刻中活出绝对的存在
  • YOLOv11 改进 - C2PSA | C2PSA融合DML动态混合层(Dynamic Mixing Layer)轻量级设计优化局部细节捕获与通道适应性,提升超分辨率重建质量
  • CodeSearchNet:一个大规模代码-文档检索数据集的构建、应用与挑战
  • Rust 模块化单体架构:告别全局 Migrations,实现真正的模块自治
  • 编辑相似度(Edit Similarity):原理、演进与多模态扩展
  • Spring-AI 最新文档系列(一)概述
  • Spring Boot 权限控制三件套:JWT 登录校验 + 拦截器 + AOP 角色注解实战
  • 5大实用技巧:用downkyi打造高效视频下载工作流
  • 百度网盘直链解析实战手册:突破限速封锁的完整解决方案
  • 电力负荷预测新思路:集成学习如何让澳大利亚电力数据“开口说话“?⚡
  • ClickHouse 快速入门
  • A little something to get you started
  • SmoothDiscreteMarchingCubes 多边形网格数据的平滑
  • AlignTwoPolyDatas 基于ICP算法的配准和相机视角切换
  • YOLOv11 改进 - C2PSA | C2PSA融合EDFFN高效判别频域前馈网络(CVPR 2025):频域筛选机制增强细节感知,优化复杂场景目标检测