zoukankan      html  css  js  c++  java
  • C++实现引用和被引用对象分离

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

    代码如下;

     1 #include <iostream>
     2 #include<string>
     3 #include <vector>
     4 #include <algorithm>
     5 using namespace std;
     6 
     7 class Test
     8 {
     9 public:
    10     int val;
    11     int y;
    12     int &ref_val;
    13     Test():val(0x01010101),y(0x01010101),ref_val(val)
    14     {
    15     }
    16 };
    17 
    18 
    19 
    20 int main()
    21 {
    22 
    23     Test obj;
    24     cout << sizeof(obj)<<endl;//VS2008中,win7 32位中结果为8,说明引用也是有内存空间的
    25     cout << &obj<<endl;
    26     cout << &(obj.val)<<endl;
    27     cout << &(obj.y)<<endl;
    28     cout << &(obj.ref_val)<<endl;
    29 
    30     //接下来将val的引用分离,改为对y的引用
    31     *(&(obj.y)+1)= (int)&(obj.y);
    32     //通过引用修改值,发现y的值变化,val不变
    33     obj.ref_val = 0x02020202;
    34     cout << hex<<obj.val <<endl<<obj.y<<endl;
    35     return 0;
    36 }

    运行结果如下

  • 相关阅读:
    分布式和集群
    c++ >>
    c++ ip地址相关
    c++ ip地址的操作 c版
    c++ 缺少动态库
    c++ dirname() basename()
    shell ulimit -n
    shell 进程查询相关的命令
    shell grep 高亮
    c++ swap 函数
  • 原文地址:https://www.cnblogs.com/LCCRNblog/p/5841164.html
Copyright © 2011-2022 走看看