【C++】3-1.4 c++编译器处理引用类型

【C++】3-1.4 c++编译器处理引用类型

1.说明

如有错误,万望留言批评指出。

2.编译处理引用

-2.1、引用是一种常量指针,存放着被引用变量的地址,但是不能够访问(直接获取其地址),或者是修改(因为常量的属性),有别于指针变量;

-2.2、引用在编译器为其分配内存空间时是将被引用的变量的地址付给了堆栈的另一个空间,从而实现引用的功能(实质上还是指针的思想);

-2.3、引用本身也是要占用空间,占用的内存恰好和指针占用的内存是一样的。
引用中储存的是被引用变量的地址。这一点引用相当于一个const指针。
但是对引用本身取地址,编译器会将其解释为对原变量取地址。

-2.4、引用是在编译的过程中被处理的,实际上就是在编译层面对程序员进行一个友好的语法,而在实现上是由编译器完成了地址的传递,实际上还是const常量指针;即将引用替换为type * const这样一个常量指针,所以引用一旦初始化就不能更改对象,但是可以修改内容。

3.如何判断&是引用运算符

& 运算符有三个含义:
-3.1、位与
-3.2、取地址
-3.3、定义一个引用类型

//位与:&在变量名中间
int a = 0b10;
int b = 0b11;
int c = a & b;

//取地址:&在变量名左边
int* p = &a;

//定义一个引用类型:&在类型名右边
int& r = b;

cout << c << endl;
cout << (int)(*p & r) << endl;

简单记忆:
“变中与,等右取,型右引”。
两个变量中间的功能为‘与’a&b。等号的右边p=&a为取地址操作。在类型声明的右边为引用int& a。

猜你喜欢

转载自blog.csdn.net/jn10010537/article/details/115291890