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

简介: 【C++系列P2】引用——背刺指针的神秘刺客(精讲一篇过!)

前言

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

一.引用

1.含义与特点

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

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

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

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

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

图示:

3.引用的实际使用


一.引用作为参数

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


二.引用作为返回值  

小目录:

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

1.不适用场景:

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

2.实际应用

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

原本操作:

改进后操作:

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

首先我们要知道,临时变量是具有常性,const 修饰的类型也具有常性,static的数据存储在静态区同样具备常性。

const和static的权限理论上平级,而临时变量的权限低于二者。

只能存在权限平级和权限缩小的情况,不能存在权限放大的情况。通俗而言:权限低的不能给权限(常性)强的取别名。

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


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

权限低的不能给另一量取别名/取地址(权限的放大)

图示:

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

2.权限平移情况

3.权限放大情况

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

相关文章
|
1月前
|
JSON JavaScript 前端开发
C++ 智能指针与 JSON 处理:高级编程技巧与常见问题解析
C++ 智能指针与 JSON 处理:高级编程技巧与常见问题解析
269 0
|
2天前
|
C++
【C++11(三)】智能指针详解--RAII思想&循环引用问题
【C++11(三)】智能指针详解--RAII思想&循环引用问题
|
3天前
|
人工智能 C++
【重学C++】【指针】轻松理解常量指针和指针常量
【重学C++】【指针】轻松理解常量指针和指针常量
9 0
|
3天前
|
存储 人工智能 C++
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
25 1
|
18天前
|
存储 C++
C++指针
C++指针
|
29天前
|
存储 编译器 C语言
【c++】类和对象(二)this指针
朋友们大家好,本节内容来到类和对象第二篇,本篇文章会带领大家了解this指针
【c++】类和对象(二)this指针
|
29天前
|
存储 编译器 C语言
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
|
30天前
|
监控 安全 算法
悬垂引用与临时对象在C++中的深入探讨: 风险、原因与预防策略
悬垂引用与临时对象在C++中的深入探讨: 风险、原因与预防策略
54 3
|
1月前
|
存储 安全 数据库连接
【C++智能指针】深入探究C++智能指针:自定义删除器的设计与选择
【C++智能指针】深入探究C++智能指针:自定义删除器的设计与选择
82 0
|
1月前
|
存储 安全 编译器
【C++ 函数设计的艺术】深挖 C++ 函数参数的选择 智能指针与 std::optional:最佳实践与陷阱
【C++ 函数设计的艺术】深挖 C++ 函数参数的选择 智能指针与 std::optional:最佳实践与陷阱
110 0