C++学习笔记之引用

Table of contet:

  1. 引用的概念
  2. 引用的本质
  3. 引用的意义
  4. 思考点
  • 引用的概念

引用是C++中引入的一个新概念,它是一个已定义变量的别名。

int a = 0;
int &b = a;
  • 引用的本质

引用在C++中的内部实现是通过常指针来实现的: Type& a   <=>   Type* const a  但又不等价于常指针(区别间思考点1)

引用定义时必须被初始化,原因是引用的本质是一个常指针,常量在定义时必须初始化

int a = 10;
int b = 20;
int &c = a;
c = b;  //可以把b赋值给c, 相当于间接修改a的值

//下面这句是错的
&c = b; //引用一旦初始化之后就不能再引用其它变量了
  • 引用的意义

引用相对于指针来说具有更好的可读性和实用性

引用做函数参数间接修改变量的值

  • 思考点

普通引用有自己的空间吗?

引用是有自己的内存空间的,从使用的角度,引用会让人误会其只是一个别名,没有自己的存储空间。这是C++为了实用性而做出的细节隐藏。

但有一点需要注意的是:

sizeof(指针)  的值永远是 4

sizeof(引用) 的值是不一定的,根据所引用的对象类型而定

  • 用变量对const引用初始化,const引用分配内存空间了吗?

当使用常量(字面量)对const引用进行初始化时,C++编译器会为常量值分配空间,并将引用名作为这段空间的别名

  • 用常量对const引用初始化,const引用分配内存空间了吗?

使用字面量对const引用初始化后,将生成一个只读变量

const int b = 10;
printf("b:%d", &b);

//int &a1 = 19; 如果不加const编译失败
const int &a = 19;
printf("&a:%d \n", &a);

猜你喜欢

转载自blog.csdn.net/wanzew/article/details/81586397