Skip to content

左值引用 ​

左值引用,就是引用,是已定义变量的别名。

主要用途:用作函数的形参,通过将引用变量用作参数,函数将使用原始数据而不是其副本。

引用的语法格式 ​

cpp
类型 &引用名 {变量名};

int a {100};
int &b {a};  // b 是对 a 的左值引用

  1. 引用在创建时必须初始化,它必须指向某个已存在的对象。
  2. 引用一旦绑定,不可改变:引用被初始化后,它将一直保持与其初始对象的绑定,不能改变为另一个对象的引用。
  3. 没有空引用:引用必须指向某个对象,不能存在空引用。

引用的本质 ​

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()