C++實現引用和被引用對象分離

上一篇博客簡單介紹了C++中引用的底層實現,接下來,經過簡單的代碼驗證如何將引用和被引用對象分離。html

代碼以下;ios

 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 }

運行結果以下spa

相關文章
相關標籤/搜索