c++ 引用
2016-07-14 10:25
127 查看
实质
实质上就是一个常量指针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在内存中保存的方式就不同咯,具体还要看标准了。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C++的template模板中class与typename关键字的区别分析
- C与C++之间相互调用实例方法讲解