c++ 引用

来源:互联网 发布:淘宝卖家怎么快速升心 编辑:程序博客网 时间:2024/06/05 16:26

实质

实质上就是一个常量指针

void * const p;

例如:

int a = 2;int &p = a;

等价于

int* const  p = &a;

看下面的例子:

float a = 0.0;float b = 1.0;cout << (int &) a << endl;cout << (int &) b << endl;

运行结果?
运行结果?
运行结果?

01065353216(即0x3F80 0000)

原因是:

(int &) a ---->> *((int* const)&a)

要强制转换为int &类型引用时,要先取a的地址&a,这时的地址类型是float型的; 然后才能进行强制转化为int型,最后再取出该地址内中的内容。
由于float和int在内存中的存储方式不同,因此打印出来会不同。当然,0在内存中不论是float(4bytes)还是int(4bytes)内存空间都是保存的0,因此结果还是为0;然而1.0在内存中保存的方式就不同咯,具体还要看标准了。

0 0
原创粉丝点击