[C++学习笔记]4 “引用”的概念和应用

1 引用的概念

下面的写法定义了一个引用,并将其初始化为引用某个变量。
类型名 & 引用名 = 某变量名;

int & r = n; // r引用了n,r的类型是int &

某个变量的引用,等价于这个变量,相当于该变量的一个别名。

int n = 7;
int & r = n;
r = 4;
cout << r; //输出 4
cout << n; //输出 4
n = 5;
cout << r; //输出 5

1.定义引用时一定要将其初始化成引用某个变量。
2.初始化后,它就一直引用该变量,不会再引用别的变量了。
3.引用只能引用变量,不能引用常量和表达式。

double a = 4, b = 5;
double & r1 = a;
double & r2 = r1;  // r2也引用a
r2 = 10;
cout << a << endl; // 输出10
r1 = b;            // r1并没有引用b
cout << a << endl; // 输出5

2 引用应用的简单示例

C语言中,如何编写交换两个整型变量值的函数?

void swap(int a, int b)
{
    int tmp;  
    tmp = a;
    a = b;  
    b = tmp;  
}

int n1, n2;  
swap(n1, n2); //n1, n2的值不会被交换
void swap(int *a, int *b)
{
    int tmp;
    tmp = *a;
    *a = *b;
    *b = tmp;
}

int n1, n2;
swap(& n1, & n2); /n1, n2的值被交换

有了C++的引用:

void swap(int & a, int & b)
{
    int tmp;
    tmp = a;
    a = b;
    b = tmp;
}

int n1, n2;  
swap(n1, n2); //n1, n2的值被交换  

3 引用作为函数的返回值

int n = 4;
int & SetValue(){return n;}
int main()
{
    SetValue() = 40;
    cout << n;
    return 0;
} //输出:40

4 常引用

定义引用时,前面加const关键字,即为“常引用”

int n;
const int & r = n;

r的类型是 const int &

不能通过常引用去修改其引用的内容:

int n = 100;
comst int & r = n;
r = 200; //编译错  
n = 300; //没问题  

5 常引用和非常引用的转换

const T & 和T & 是不同的类型!!!

T & 类型的引用或T类型的变量可以用来初始化const T & 类型的引用。

const T 类型的常变量和const T &类型的引用则不能用来初始化T &类型的引用,除非进行 强制类型转换


站在巨人的肩上
【1】北京大学信息技术学院《程序设计实习》

原创文章 21 获赞 16 访问量 1535

猜你喜欢

转载自blog.csdn.net/Allen_Spring/article/details/105456996