左值引用
左值引用,就是引用,是已定义变量的别名。
主要用途:用作函数的形参,通过将引用变量用作参数,函数将使用原始数据而不是其副本。
引用的语法格式
cpp
类型 &引用名 {变量名};
int a {100};
int &b {a}; // b 是对 a 的左值引用- 引用在创建时必须初始化,它必须指向某个已存在的对象。
- 引用一旦绑定,不可改变:引用被初始化后,它将一直保持与其初始对象的绑定,不能改变为另一个对象的引用。
- 没有空引用:引用必须指向某个对象,不能存在空引用。
引用的本质
cpp
int *pa {&a}; // pa = pb
int *pb {&b};- 引用的地址是指向原始变量的地址。
注意事项
- 引用主要用于 函数参数、返回值、类的成员变量等场景,以提供对原始变量数据的直接访问,从而提升程序的效率和可读性。
- 引用是可以被
const修饰的,表明不能通过引用来修改它所指向的对象的值。
引用作为函数参数
cpp
void swap(int &a, int &b) {
int temp {a};
a = b;
b = tmp;
}
int a {20}, b {30};
swap(a, b);- 指针和引用在函数参数中的作用:提高效率、修改用户数据
引用作为函数返回值
cpp
int& getElement(int arr[], int index) {
return arr[index];
}- 引用作为函数返回值,意味着函数返回的是一个变量的别名,而不是值的拷贝。
- 不要返回局部变量的引用
- 返回引用的函数调用可以作为左值。
引用作用于类对象
cpp
MyClass obj;
MyClass &ref {obj};
ref.doSomething(); // 相当于 obj.doSomething()