2019寒假C++学习笔记
一:引用
本文所指的引用为左值引用。
引用其实可以理解为一个对象的别名,一般在初始化变量时,初始值会被复制到新建的对象中,而定义引用时,程序则会把引用和初始值绑定到一起,而非复制。一经初始化完成,引用则会一直和他的初始化对象绑定在一起,无法重新绑定到另外的对象上,所以引用必须初始化。
一条语句内可以定义多个引用,引用开头必须是&符号,且引用类型必须与被绑定对象类型一致(有两种情况例外)。
引用即别名:引用并非对象,它只是为一个已经存在的对象所起的另外一个名字。
摘自:C++ primer
#include<iostream>
using namespace std;
int main() {
int i = 100, j = 0, a = 20;
//这里定义引用references绑定到变量i上
int &references = i;
//此处就可以看出,输出引用references的值实际上就是输出引用所绑定的变量的值
cout << " references所引用的对象值为: " << references << endl;
//此处给引用重新赋值,实际上就是给引用所绑定的变量重新赋值
references = 10;
cout << " 更改后references所引用的值为: " << references << " i: " << i << endl;
//此处引用给变量j赋值,实际上就是引用所绑定的变量的值给j赋值
j = references;
cout << " j的值为: " << j << endl;
//在我刚学习的时候,以为此处的引用像指针一样重新绑定到了变量a上
//实际上是将a的值赋值到引用所绑定的变量上
//引用一经初始化后无法再次绑定到另外的对象上
references = a;
cout << " 更改后references所引用的值为: " << references <<" i: "<< i << endl;
//这段就可以看出它们的实际关系了
a = 50;
cout << "&references:" << references << " i:" << i << " a:" << a << endl;
return 0;
}
运行结果为:
references所引用的对象值为: 100
更改后references所引用的值为: 10 i: 10
j的值为: 10
更改后references所引用的值为: 20 i: 20
&references:20 i:20 a:50