【C++系列P2】引用——背刺指针的神秘刺客(精讲一篇过!)
【摘要】 前言大家好吖,欢迎来到 YY 滴 C++系列 ,热烈欢迎!如标题所示,本章主要内容主要来侃侃“引用”这个刺客!如下就是大纲啦~编辑一.引用1.含义与特点引用,即取别名。它的最大特点是编译器不会为引用变量而开辟空间,他们共用同一块空间。 2.引用和指针的区别(主要) 1.引用使用时必须要初始化。2.引用在初始化时引用一个实体后,不能再次引用其他实体,只能赋值。3.引用使用起来更安全。图示...
前言
- 大家好吖,欢迎来到 YY 滴 C++系列 ,热烈欢迎!
- 如标题所示,本章主要内容主要来侃侃“引用”这个刺客!如下就是大纲啦~
一.引用
1.含义与特点
引用,即取别名。它的最大特点是编译器不会为引用变量而开辟空间,他们共用同一块空间。
2.引用和指针的区别(主要)
1.引用使用时必须要初始化。
2.引用在初始化时引用一个实体后,不能再次引用其他实体,只能赋值。
3.引用使用起来更安全。
图示:
3.引用的实际使用
一.引用作为参数
作为输出型参数时,面对大对象/深拷贝对象时,由于不用另外开辟空间拷贝,可以提高效率
二.引用作为返回值
小目录:
- 适用场景
- 修改返回值+获取返回值 (使通讯录代码更简洁)
1.不适用场景:
适用场景:(静态区栈帧不销毁)
2.实际应用
- 在通讯录中,用传统的方法,需要“查找"到对应pos位置后再“修改”
- 而运用“引用作为返回值”,可直接对查找到的值进行修改。
原本操作:
改进后操作:
3.引用过程中的权限问题(平移,缩小,放大)
- 首先我们要知道,临时变量是具有常性,const 修饰的类型也具有常性,static的数据存储在静态区同样具备常性。
- const和static的权限理论上平级,而临时变量的权限低于二者。
- 只能存在权限平级和权限缩小的情况,不能存在权限放大的情况。通俗而言:权限低的不能给权限(常性)强的取别名。
权限相关知识点:【权限等级较高的是const和具有常属性的量,权限较低的是普通数据】
- 权限高的或平级的可以给另一量取别名/取地址(权限的缩小和平移)
- 权限低的不能给另一量取别名/取地址(权限的放大)
图示:
1.平级和权限缩小的情况
2.权限平移情况
3.权限放大情况
PS:const原则上不能修改,但是可以通过找到其空间直接修改。(指针/别名)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)