对引用的认识

首先引用本身是占存储空间的,引用存储的就是所引用对象的地址
比如   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丢失了它所指的对象!!!! 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章