引用的概念

  1. 定义 类型名 & 引用名 = 某变量名

    1. 相当于起了一个别名
      1. int n = 7;
      2. int & r = n;
      3. r = 4;
      4. cout << r; // 输出 4
      5. cout << n; // 输出 4
  2. 注意

    1. 定义引用时一定要将其初始化成引用某个变量
    2. 初始化后,从一而终
    3. 只能引用变量,不能引用常量和表达式
      1. double a = 4, b = 5;
      2. double & r1 = a;
      3. double & r2 = r1; // r2也引用a
      4. r2 = 10;
      5. cout << a << endl; // 输出10
      6. r1 = b; // r仍引用a
      7. cout << a << endl; // 输出5

      引用做函数的返回值

      1. int n = 4;
      2. int& setValue() { return n;}
      3. int main {
      4. setValue() = 40;
      5. cout << n; // 输出40
      6. return 0;
      7. }

      常引用

      1. int n;
      2. const int & r = n
      r的类型是 const int &
  • 不能通过常引用修改其引用的变量
    1. int n = 100;
    2. const int & r = n;
    3. r = 200; // 编译出错
    4. n = 300; // 没问题

    常引用雨非常引用的转换

    const T & 和 T & 是不同的类型!!!
    T & 类型可以初始化 const T &,反过来不行,除非强制类型转换