前言

  • 大家好吖,欢迎来到 YY 滴 C++系列 ,热烈欢迎!
  • 如标题所示,本章主要内容主要来侃侃“引用”这个刺客!如下就是大纲啦~

一.引用


1.含义与特点

引用,即取别名。它的最大特点是编译器不会为引用变量而开辟空间,他们共用同一块空间。 


2.引用和指针的区别(主要) 

1.引用使用时必须要初始化。

2.引用在初始化时引用一个实体后,不能再次引用其他实体,只能赋值。

3.引用使用起来更安全。

图示:


3.引用的实际使用


一.引用作为参数

作为输出型参数时,面对大对象/深拷贝对象时,由于不用另外开辟空间拷贝,可以提高效率


二.引用作为返回值  

小目录:

  1. 适用场景
  2. 修改返回值+获取返回值 (使通讯录代码更简洁)

1.不适用场景: 

适用场景:(静态区栈帧不销毁)


2.实际应用 

  • 在通讯录中,用传统的方法,需要“查找"到对应pos位置后再“修改”
  • 而运用“引用作为返回值”,可直接对查找到的值进行修改。

原本操作:

改进后操作: 


3.引用过程中的权限问题(平移,缩小,放大) 

  1. 首先我们要知道,临时变量是具有常性,const 修饰的类型也具有常性,static的数据存储在静态区同样具备常性。
  2. const和static的权限理论上平级,而临时变量的权限低于二者。
  3. 只能存在权限平级和权限缩小的情况,不能存在权限放大的情况。通俗而言:权限低的不能给权限(常性)强的取别名。

权限相关知识点:权限等级较高的是const和具有常属性的量,权限较低的是普通数据

  • 权限高的或平级的可以给另一量取别名/取地址(权限的缩小和平移)
  • 权限低的不能给另一量取别名/取地址(权限的放大)

图示:

1.平级和权限缩小的情况

 

 2.权限平移情况

 3.权限放大情况

 PS:const原则上不能修改,但是可以通过找到其空间直接修改。(指针/别名)

【C++系列P2】引用——背刺指针的神秘刺客(精讲一篇过!)相关推荐

  1. acm新手小白必看系列之(5)——枚举进阶例题精讲

    acm新手小白必看系列之(5)--枚举进阶例题精讲 1.牛奶碑文(暴力枚举) 小伟暑假期间到大草原旅游,在一块石头上发现了一些有趣的碑文.碑文似乎是一个神秘古老的语言,只包括三个大写字母 C.O 和 ...

  2. 【建站系列教程】3.2、ajax使用精讲

    [建站系列教程]3.2.ajax介绍 ajax的应用场景 1.form表单实现无跳转提交 2.ajax局部刷新代替刷新网页 ajax的通俗介绍 ajax的基本用法 ajax的ES写法 写在前面:大家好 ...

  3. 【C++系列P7】模板搞不懂?脑阔抖三抖!!精讲一篇过!

     前言 大家好吖,欢迎来到 YY 滴 C++系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁,主要内容含 目录 一.模板 1.函数模板 一.函数模板概念 二.函数模板的格式 三.函数模板的实例化 ...

  4. R语言实战应用精讲50篇(三十一)-R语言入门系列-tidyverse数据分析流程

    1. 数据分析的开端,Tidyverse? tidyverse 是一个清晰的 R 包集合,在数据操作.探索和可视化领域提供统一的数据科学解决方案,这些解决方案具有共同的设计理念.它是由 RStudio ...

  5. R语言实战应用精讲50篇(五)-多重线性回归系列之模型拟合

    前言 多重线性回归模型的最终建立不仅仅拟合个方程就完事了,还需要进行适用条件的考察.模型的诊断以及改进模型的再评估等. (1)拟合多重线性回归模型: (2)适用条件考察:线性.独立性.正态性.同方差性 ...

  6. R语言实战应用精讲50篇(三)-多重线性回归系列之模型评估与诊断应用案例

    前言 回归模型对数据的拟合性怎么样,有没有异常点,各自变量间存不存在多重共线? 本文进行拟合优度的评估.异常点(离群值.高杠杆值.强影响点)的识别与多重共线的诊断. 模型评估与诊断 (1)模型拟合优度 ...

  7. R语言实战应用精讲50篇(二)-多重线性回归系列之稳健回归

    前言 线性回归的参数估计主要采用的是最小二乘法(又称最小平方法),该法是将使观测值与模型预测值之差的平方达到最小的值作为参数估计值.如果数据存在异常点或者异方差,最小二乘法估计会存在偏差,常用的处理策 ...

  8. 深度学习核心技术精讲100篇(二十三)-深度学习系列计算广告与推荐系统有哪些区别?使用的主流模型有哪些?

    计算广告与推荐系统有哪些区别? 这两个领域的联系大于区别,区别的根本在于两个领域尝试解决的问题是不同的. 对于计算广告来说,本质上要处理的是三方利益的协调问题,这三方分别是广告主.用户和媒体. 对于推 ...

  9. 深度学习核心技术精讲100篇(八)-keras 实战系列之深度学习中的多任务学习(Multi-task learning)

    多任务学习(Multi-task learning)简介 多任务学习(Multi-task learning)是迁移学习(Transfer Learning)的一种,而迁移学习指的是将从源领域的知识( ...

最新文章

  1. ssl双向认证_SSL握手协议不清楚?vTrus为你讲解其详细流程
  2. 验证字符串是否为汉字
  3. web登录时候加入过滤器的用法
  4. 信息学奥赛C++语言:被3整除
  5. ubuntu16.04 安装composer 以及 laravel
  6. python弱类型好处_JavaScript弱类型语言的优缺点有哪些
  7. B+/-Tree原理(mysql索引数据结构)
  8. zabbix详解(十五)——zabbix proxy配置实战
  9. 合振动的初相位推导_如何理解单自由度系统振动
  10. 四年级计算机病毒与网络安全,《计算机病毒与网络安全》教学案例
  11. 语义分割Swin Transformer
  12. 如何运用dos命令进入C盘?Dos常用命令大全
  13. vs2013创建WebService
  14. android n改铃声,来电铃声自定义,我”响“你快乐!
  15. 使用PS快速保存多种尺寸的图标
  16. php 正方,php 模拟登陆正方教务系统
  17. Python pywifi 、Kali linux aircrack-n、Hashcat 【python、kali】破解无线WiFi密码(详细流程)
  18. 电子通信、嵌入式工程师的面试指南
  19. Google Maps API Key申请办法(最新)
  20. AutoCAD.NET API2018二次开发第十一章

热门文章

  1. spring6启示录
  2. 题目:L2-031 深入虎穴 (25 分)
  3. 工作组计算机无法打开电子表格,Excel突然出现工作组 是什么原因?
  4. JAVA课程设计——华容道小游戏
  5. C++ 库函数<string>示例
  6. VC-dimension
  7. POJ - Euclid(计算几何)
  8. java实现fcfs_JAVA从入门到精通之实现进程调度算法 FCFS
  9. Android 自定义view 图片编辑(画圆,画长方形,手势缩放)
  10. pytorch转onnx的c++调用