问一下const引用和普通引用的区别

markapril 2011-11-24 09:21:35

问一下为什么,普通引用只能绑定到和自己一样的类型,const引用却可以绑定到和自己相关的类型,即绑定范围更大了。

double b = 100.1;

//error: invalid initialization of reference of type 'int&' from expression of type 'double'
//int &refb1 = b;
const int &refb2 = b;

谢谢。
...全文
131 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
林临工作室 2011-11-24
  • 打赏
  • 举报
回复
估计是编译器实现机制的问题。

const int &refb2 = b; 也是引用到int类型的,b丢失精度了
lgfeng218 2011-11-24
  • 打赏
  • 举报
回复
const引用是指向const对象的
即:const int i = 1024;
const int &v = i;
pengzhixi 2011-11-24
  • 打赏
  • 举报
回复
如果想知道具体的那就去看看标准文档了。
markapril 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pengzhixi 的回复:]

你的说法是有问题的,并非是说const引用绑定的类型更广。两者绑定的类型范围都是一样的。对于内置类型来说只可能绑定和声明的类型一致。对于自定义类型来说可以绑定基类或者派生类对象。

至于你举的这个例子,只是说const 引用绑定到了一个临时的int对象而已。
[/Quote]
谢谢,那为什么const引用可以绑定到临时的int(把double b转换为临时int再绑定),非const引用却不能这样做。
pengzhixi 2011-11-24
  • 打赏
  • 举报
回复
你的说法是有问题的,并非是说const引用绑定的类型更广。两者绑定的类型范围都是一样的。对于内置类型来说只可能绑定和声明的类型一致。对于自定义类型来说可以绑定基类或者派生类对象。

至于你举的这个例子,只是说const 引用绑定到了一个临时的int对象而已。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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