引用本质上是指针常量

&、*的四种修饰情况:

int a = 1;
int *p = &a; // 定义变量时修饰*,定义指针;使用变量时修饰&,取地址
int &b = a; // 定义变量时修饰&为引用,即取别名
cout << *p << endl; // 使用变量时用*为取值,即a的值1

函数的返回值可以是引用类型

int & func() {
    static int a = 1;
    return a;
}

int b = func();
func() = 2;
cout << b << endl; // b=2

常量引用
作用:修饰形参,可以防止误操作;常量引用结合了常量和引用的优势,既保证值不被修改(常量的优势),也节省了空间(引用的优势)——因为引用本质是指针常量,即不能改变指针指向,指针的优势是只要存储一个地址,当需要传递一个很大的结构体时只需传递结构体的地址而不需要将整个结构体都复制一遍。

const int & ref = 10; // 等价于int temp = 10; const int & ref = temp;
int & a = 10; // 但这种操作不允许,引用一定要引一块合法的内存空间
ref = 20; // 报错,常量引用不能修改

void func(const int & val) {
    val = 10; // 报错,常量引用不能修改
}

标签: none

添加新评论