對引用的認識

首先引用本身是佔存儲空間的,引用存儲的就是所引用對象的地址
比如   int   a=5;
int&   b=a;
int&   c=b;
因此 引用 b 和 c 存儲的都是變量 a 的地址,但是 通過 &b 或 &c 是無法取到引用 b 和 c 本身的地址的
取到的是變量 a 的地址,這就是爲什麼說引用比指針更安全!!因爲無法取到引用 b 和 c 的地址意味着你就
無法改變引用 b 和 c 存儲的內容,也就無法改變它們所引用的對象,這是非常安全的。
有人把引用比成一個指針常量,因爲指針常量一旦指向了某個對象,它就不能再指向其它對象了。從這個意義
上說引用的確和指針常量很相似,但是隻要涉及到指針就是不安全的。比如
int a  = 6;
int *const p = &a;//這裏指針p中存儲的就是變量 a 的地址
int **g = (int**)&p;//這裏指針 g 中存儲的就是指針 p 的地址
*g = 0;  //這裏將指針p中內容置零!!!p丟掉了它所指的對象
cout < <*p < <endl;
如果沒有 *g = 0 將輸出 6 ,但如果有了 *g = 0 就會導致 指針p丟失了它所指的對象!!!! 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章