常量引用(对const的引用)

今天才发现,“常量引用”是真的特殊。

对于一般的引用而言,需要要求引用的类型与引用对象的类型一致,如:

int i = 3;
int &r1 = i;//合法
double &r2 = i;//非法

类型一致,是一般引用的一个标准。
但是,对于“常量引用”(对const的引用)却可以不遵从这种方式。

在初始化常量引用时,允许用任意表达式作为初始值(只要改表达式的结果可以转化为该引用的类型即可),包括非常量的对象字面值,甚至是一般表达式

如下:

int i = 42;
const int &r1 = i;//合法
const int &r2 = 42;//合法
const int &r3 = r1 * 2;//合法
int &r4 = r1 * 2;//非法

由上面的事例可以看出,对于“常量引用”而言,基本上各种能够转化为该引用类型的右值都是合法的;但是对于“一般引用”,必须要求引用的类型与引用对象的类型一致

参考资料:《C++ primer》

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值