C++引用
前言:
在 C++ 中,引用(Reference) 是一种为变量或对象起别名的方式,它提供了对现有数据的间接访问。引用是 C++ 区别于 C 语言的重要特性之一,设计初衷是提高代码的安全性和可读性,同时避免指针的复杂性。
在生活中,我们可能也会给一些同学起外号,以“张三”同学为例,我们可以叫他“啊三”,当我们叫到这个外号的时候就会自然而然的想到“张三”同学,”啊三”就是张三的别名。在语法层面上看,引用就是取别名
定义:
引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它与引用的变量共用同一块内存空间。
引用的核心特点:
-
别名特性:
引用必须初始化,且一旦绑定到某个对象,就不可再指向其他对象。 -
底层实现:
引用本质上是通过指针实现的,但语法上隐藏了指针的复杂性(如解引用操作*
)。 -
不可为空:
引用必须绑定到一个有效的对象,不能像指针一样初始化为nullptr
或NULL
。
基本格式:
类型 & 引用变量名(对象名) = 引用实体
int a=0;
int&b=a;
//b就是a的别名
cout<<b<<endl;
b++;
cout<<a;
//运行结果:
0
1
引用的使用过程中权限的变化:(const)
权限可以缩小不可以放大
int y=0;
const int x=0;
//int&n=x;权限被放大,由x的只读放大到n的可读可写
const int&n=x;
//权限缩小,是引用规则允许的
const int&m=y;
//可以,不是权限的放大
//x拷贝给p,p的修改不影响x
int p=x;
//不可以,p2的改变可以影响*p1,而*p1被const修饰,不能改变
const int*p=&x;
int*p2=p1;