上一篇博客简单介绍了C++中引用的底层实现,接下来,通过简单的代码验证如何将引用和被引用对象分离。

代码如下;

 #include <iostream>
#include<string>
#include <vector>
#include <algorithm>
using namespace std; class Test
{
public:
int val;
int y;
int &ref_val;
Test():val(0x01010101),y(0x01010101),ref_val(val)
{
}
}; int main()
{ Test obj;
cout << sizeof(obj)<<endl;//VS2008中,win7 32位中结果为8,说明引用也是有内存空间的
cout << &obj<<endl;
cout << &(obj.val)<<endl;
cout << &(obj.y)<<endl;
cout << &(obj.ref_val)<<endl; //接下来将val的引用分离,改为对y的引用
*(&(obj.y)+)= (int)&(obj.y);
//通过引用修改值,发现y的值变化,val不变
obj.ref_val = 0x02020202;
cout << hex<<obj.val <<endl<<obj.y<<endl;
return ;
}

运行结果如下

最新文章

  1. HAProxy的日志配置以及ACL规则实现负载均衡
  2. Jackson 通过自定义注解来控制json key的格式
  3. hashMap的输出是和加入元素的顺序一样的吗?
  4. linux-01Red Hat Enterprise Linux 7(RHEL7)配置静态IP地址
  5. artTemplate 介绍
  6. [POJ1330]Nearest Common Ancestors(LCA, 离线tarjan)
  7. cocos2dx Hello world 创建
  8. ZOJ 2967 Colorful Rainbows 【Stack】
  9. bestcoder44#1002
  10. uinty3d使用ugui封装一个分页控件
  11. Dive in python Chapter4 实例
  12. docker学习------记录centos7.5下docker安装更换国内源的处理过程
  13. C#3.0 Lamdba表达式与表达式树
  14. git bash + gitee
  15. python特色_字典,元组,列表
  16. 来一个使用sysbench测试cpu性能的简单脚本
  17. Map集合与转化
  18. Android AppCompat 需要 API 级别 11
  19. java修改AD域用户密码使用SSL连接方式
  20. DNS服务器配置实践

热门文章

  1. 一个JavaScript触发器插件,可通过指定频次、指定时间内触发指定的处理函数
  2. 每天学点SpringMVC-异常处理
  3. thinkphp的select和find的区别
  4. vue实例讲解之axios的使用
  5. 好用的前端页面性能检测工具—sitespeed.io
  6. 英特尔:不再公布PC处理器多核睿频数据
  7. [转载]Reids配置文件详解
  8. zoj3432 Find the Lost Sock 亦或的运用
  9. mysql导出数据库和恢复数据库代码
  10. Android进程间通信