上一篇博客簡單介紹了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