【C++初阶】引用

简介: 【C++初阶】引用

 

一.概念

引用就是取别名,在语法上它不会开空间,而是和它引用的变量共用同一块空间对引用的操作也就是对原来变量的操作。就像现实生活中给人取外号一样,不管是喊外号还是本名,指的都是那个人。


二.引用特性

1.引用类型必须和引用实体是同种类型的;

2.引用在定义时必须初始化

3. 一个变量可以有多个引用

4.引用只能有一个实体,它和指针不同,指针能够改变指向,而引用不能。

所以上图中的 b=x ,是赋值语句,而不是b引用x;

5.引用的权限可以缩小,可以平移,但不可以放大

权限放大:

权限缩小:

权限平移:


三.使用场景

引用做参数

1.做输出型参数(输出型参数就是形参的改变会改变实参,输入型参数相反);

2.减少拷贝,提高效率(在遇到大对象,或者是要深拷贝时宜用)

举一个典型的例子,C语言阶段我们都写过交换函数,当时是用的指针实现,但现在我们可以用引用实现:

引用做返回值

1.减少拷贝,提高效率(在遇到大对象,或者是要深拷贝时宜用);

2.修改返回值+获取返回值

引用做参数可以随便用,但是引用做返回值可不敢随便用

1.如果函数结束,返回的变量不销毁,可以用引用做返回值

2.如果函数结束,返回的变量销毁,则不可以用引用做返回值,可能会出现随机值;

这几点要牢记,防止出现莫名其妙的错误。


四.引用和指针的区别

在C++中引用可已用来代替指针实现一些功能,但C++并没用完全抛弃指针,有的功能就必须要用指针,所以C++的引用不能完全代替指针

实际上,引用的底层使用指针实现的,所以实际上引用是开空间的,但我们前期就认为它不开空间。

引用和指针的不同点:

1. 引用概念上定义一个变量的别名,指针存储一个变量地址;

2. 引用在定义时必须初始化,指针没有要求;

3. 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任      何一个同类型实体;

4. 没有NULL引用,但有NULL指针;

5. 在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数        (32位平台下占4个字节);

6. 引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小;

7. 有多级指针,但是没有多级引用;

8. 访问实体方式不同,指针需要显式解引用,引用编译器自己处理;

9. 引用比指针使用起来相对更安全;


🐬🤖本篇文章到此就结束了, 若有错误或是建议的话,欢迎小伙伴们指出;🕊️👻

😄😆希望小伙伴们能支持支持博主啊,你们的支持对我很重要哦;🥰🤩

😍😁谢谢你的阅读。😸😼

目录
相关文章
|
13小时前
|
C++
C++程序中对象成员的引用
C++程序中对象成员的引用
6 2
|
5天前
|
C++
c++引用是什么意思?
c++引用是什么意思?
6 2
|
5天前
|
C++
c++引用看这个就够了
c++引用看这个就够了
11 0
|
5天前
|
存储 安全 C++
深入理解C++中的指针与引用
深入理解C++中的指针与引用
12 0
|
5天前
|
编译器 C语言 C++
c++初阶------类和对象(六大默认构造函数的揭破)-3
c++初阶------类和对象(六大默认构造函数的揭破)
|
5天前
|
编译器 C语言 C++
c++初阶------类和对象(六大默认构造函数的揭破)-2
c++初阶------类和对象(六大默认构造函数的揭破)
|
5天前
|
存储 编译器 C语言
c++初阶-------类和对象-2
c++初阶-------类和对象
|
5天前
|
安全 编译器 C语言
C++初阶------------------入门C++(三)
C++初阶------------------入门C++(三)
|
5天前
|
存储 Linux 编译器
C++初阶------------------入门C++(二)
C++初阶------------------入门C++(二)
|
5天前
|
编译器 C语言 C++
C++初阶------------------入门C++(一)
C++初阶------------------入门C++(一)