其本质是一个指针常量,即int &ref=a; 相当于int* const ref=&a;
引用必须初始化 并且初始化后不可以改变

数据类型 &别名=原名
    int a=10;
    int &b=a;
    b是a的别名 都是操作同一块内存


引用作函数参数  (函数内操作形参可以改变传入的实参的值)
    定义
    void a(int &a,int &b)
    {

    }
    使用:a(aa,bb)


引用作函数返回值
    1.不要返回局部变量的引用 相当于返回了一个被释放的变量
    2.函数调用可作为左值 因为返回的是引用相当于是给变量赋值
    3.不能返回函数内部通过new分配的内存的引用 会因为没有变量名而无法释放
    
    int a=1;
    int & t(void)
    {
        return a;
    }

    t()=2;

    此时a=2?

常量引用    
    主要用于函数形参防止误操作 与值传递一个效果  但是引用比值传递省空间(作返回值时也是如此 不会返回一个副本而是返回本就有的变量的别名)
    引用的类型必须和所引用的类型严格匹配,且不能与字面值或者某个表达式的计算结果绑定在一起,但是 “常量引用” 是例外(只要被引用的类型能够转换为常量引用的类型)
    float c=1.0
    int b=10
    const int &a=10    右侧可为变量
    const int &a=b
    const int &a=c     但是将c强转int了相当于  const int temp = c;  生成一个临时的整型常量  const int &a = temp;       // 让 a 绑定这个临时量

    int a=10
    void f(const int &x)
    {

    }
    f(1)
    f(a)

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐