const引用问题:为什么const int ival=1024;const int *&pi_ref=&ival; 这样才正确?

panadaa 2004-01-09 02:18:10
EXAMPLE:我们希望用一个const对象地址来初始化一个引用。非const引用定义是非法的。如:(一旦引用已经定义,它就不能再指向其他对象)
Const int ival=1024;
Int *&pi_ref=&ival; //error
我们修改为:
const int ival=1024;
const int*&pi_ref=&ival;
然而,我们引用不是指向一个常量,而是指向一个非常量指针,指针指向一个const对象。正确的如下:
const int ival=1024;
const int *const &pi_ref=&ival;

上面是C++PRIMER中的大概意思,
但我还不是很明白为什么
Const int ival=1024;
const int *&pi_ref=&ival;
这样还是错的?

各位大哥解答一下好吗?》

...全文
172 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
panadaa 2004-01-09
  • 打赏
  • 举报
回复
明白,多谢Jinhao(辣子鸡丁【被考试强奸】) 。
Jinhao 2004-01-09
  • 打赏
  • 举报
回复
先来看一段代码
const int ival=1024;
const int* pi=&ival;
const int* &pi_ref=pi; //正确,pi_ref引用的是一个指向常量的指针
/////////////////////////////
const int* &pi_ref=&ival; 的错就在于&ival返回的那个[指向常量的指针]是一个临时对象,非const引用不能帮定在临时对象上。
所以要把pi_ref弄成一个const引用
const int* const &pi_ref=&ival;
panadaa 2004-01-09
  • 打赏
  • 举报
回复
楼上兄弟:我明白你的意思。
我说的是
const int ival=1024;
const int *const &pi_ref=&ival;
这个是正确的,
因为用的是指针的引用,

但是为什么要有第二个const呢?
也就是说:
Const int ival=1024;
const int *&pi_ref=&ival;
这样为什么不对呢?

大家帮忙啊,
zzzle 2004-01-09
  • 打赏
  • 举报
回复
#include <iostream.h>
void main()
{
const int ival=1024;
const int *pi_ref=&ival;

cout<<ival<<" "<<*pi_ref<<endl;
}
应该是这样的
如果象你那样写,编译提示cannot convert from const int * to const int
因为 又有 int *&a ==> int a
不过是指针
panadaa 2004-01-09
  • 打赏
  • 举报
回复
在线等待!!

65,199

社区成员

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

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