const 与 引用的结合的问题

chelp 2011-10-02 06:48:00
const int ival =1024;
const int *&pi=&ival;//不正确
const int *const &pi=&ival;//正确
想问问原因?请指教
...全文
70 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
chelp 2011-10-02
  • 打赏
  • 举报
回复
谢谢,分给你了啊
iamnobody 2011-10-02
  • 打赏
  • 举报
回复
const int ival =1024;
const int *&pi=&ival;//不正确
const int *const &pi=&ival;//正确


他的原理和下面的相似:
int *p1 = 0;
int *const p2 = 0;
int *const *pi = p1;//不正确
int *const *pi = p2;//正确


下面解释你的疑问:
const int *&pi=&ival;//不正确

&ival 代表一个左值的地址。是一个地址常量。

而 const int* &pi 的意思是 &pi是一个普通的引用。他的引用类型是const int* ;
也就是一个指针类型的引用。

一个普通的引用不能用常量(不是左值)来初始化。因为你可以通过修改pi的内容,来修改他引用的指针;

const int *const &pi=&ival;//正确


这里第二个const表表,pi的内容不能被修改。所以可以用一个地址常量来初始化。

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧