实质
实质上就是一个常量指针
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;
运行结果?
运行结果?
运行结果?
0
1065353216(即0x3F80 0000)
原因是:
(int &) a ---->> *((int* const)&a)
要强制转换为int &类型引用时,要先取a的地址&a,这时的地址类型是float型的; 然后才能进行强制转化为int型,最后再取出该地址内中的内容。
由于float和int在内存中的存储方式不同,因此打印出来会不同。当然,0在内存中不论是float(4bytes)还是int(4bytes)内存空间都是保存的0,因此结果还是为0;然而1.0在内存中保存的方式就不同咯,具体还要看标准了。