关于常量指针的引用
2016-07-28 11:18
274 查看
int main() { int n[3] = { 3,4,5 }; const int * const p = n; //既然有指向指针的引用,就不难想到指向常量指针的引用。 //于是就有如下尝试 //const int * (&r) = p; //结果报错如下 //将 "const int *&" 类型的引用绑定到 "const int *const" 类型的初始值设定项时,限定符被丢弃 //也就是说由于顶层const被抛弃 赋予r的为 const int *类型的指针 由于引用可以改变指向对象的值,所以声明报错 //这时候就想到了const_cast类型转换了 我们加上后代码如下 const int * (&r) = const_cast<const int *>(p); std::cout << *r<<" "; r += 1; std::cout << *r<<" " ; //输出代码如下:3 4 //也就是说使用指向 const * const 类型的指针 的引用的时候会丢失掉指针的const 这使得我们可以改变指针引用的值(指针指向的地址)。 //这就使得源指针p的值发生了改变!!! 这很不安全!!! 所以不要使用引用来返回接口对象!!! std::cout << *p << " "; return 0; }
相关文章推荐
- 线性插值和双线性插值
- Android Studio 每次启动都默认打开项目--解决方法
- 进入Material Design时代
- Harris角点检测原理分析
- Android中关于图片压缩的小结
- 【Debug】CVTRES : fatal error CVT1100: duplicate resource. type:MANIFEST
- SDUT 递归的函数 2176
- Linux下的定时器
- VC中CTreeCtrl和CListCtrl失去焦点时高亮选中项
- Linux内核之数据结构--链表
- poj3099
- POJ 2762 Going from u to v or from v to u?
- 字符串模式匹配
- 易买网的一些增删改查
- AndroidStudio 开启lambda支持
- MonkeyRunner API使用说明-------------第4章
- java锁之Semaphore(信号量,限制并发数量)
- Android ListView 单条刷新方法实践及原理解析
- 进程间通信—‘匿名管道’
- RHEL7/Centos 7/Fedora 22/23/24 安装谷歌chrome浏览器