一,C++中引用的基础知识
1.引用的基本概念
1.所谓的引用其实就是对变量起“别名”。引用和变量对应得是相同的内存,修改引用的值,变量的值也会改变,和指针类似。
2.引用在定义的时候必须要初始化,初始化后就用引用的对象绑定在一起了。
3.引用本身不是对象,不能定义引用的引用。
2.引用的意义
1.引用作为其他变量的别名存在,因此在一些场合可以用来替代指针。
2.引用相对于指针来说具有更好的可读性和实用性。
3.引用的定义方式
数据类型 &引用名称 = 变量;
# include<iostream>
using namespace std; int main()
{
// 定义变量a
int a = ;
// 定义引用b
int &b = a; return ;
}
二,引用的本质
1.引用的本质剖析
# include<iostream>
using namespace std; int main()
{
// 定义变量a
int a = ;
// 定义引用b
int &b = a;
// 引用一旦初始化,就不再改变本身所绑定的对象,因此引用很想一个const修饰的常量
cout << "&a = " << &a << endl;
cout << "&b = " << &b << endl;
// 通过打印地址,发现变量和引用的地址相同,因此引用本质是一个指针 return ;
}
2.引用的本质分析
1.引用的初始化之后不允许被修改,因此引用是一个常量。
2.引用的地址和变量本身的地址一样。因此引用是一个指针。
3.引用的本质是一个常量指针,只是C++编译器帮助我们进行了自动取地址操作和解引用操作。
4.上述的案例的本质:int &b = a; 相当于 int * const b = &a;
三,引用的重点
1.引用作函数参数
引用作函数参数可以用来替代指针,在函数内部操作引用,就可以修改函数外部变量的值。
2.引用作函数返回值(此处涉及类的拷贝构造函数)
引用作函数返回值,如果返回的是栈变量,则实际返回的是该变量的一份拷贝。
3.指针引用
引用是指针类型的,例如:Teacher teacher = {"王刚",21};Teacher * &t = &teacher;
4.常引用
使用变量初始化引用,使引用具有只读属性,保护了引用所指向的对象,防止被函数内部修改。
使用字面量初始化引用,例如:const int &a = 10;是可以的,这里会在编译期间对字面量常量分配内存空间,在上一节的const中有提过。