C++ Primer_4th学习笔记(3)- 引用


2.5. 引用

引用是一种复合类型,通过在变量名前添加“&”符号来定义。复合类型是
指用其他类型定义的类型。在引用的情况下,每一种引用类型都“关联到”某一
其他类型。不能定义引用类型的引用,但可以定义任何其他类型的引用。
引用必须用与该引用同类型的对象初始化:
int ival = 1024;
int &refVal = ival; // ok: refVal refers to ival
int &refVal2; // error: a reference must be initialized
int &refVal3 = 10; // error: initializer must be an object

const 引用

术语:const 引用是指向 const 的引用
C++ 程序员常常随意地使用术语 const 引用。严格来说,“const 引
用”的意思是“指向 const 对象的引用”。类似地,程序员使用术语
“非 const 引用”表示指向非 const 类型的引用。这种用法非常普遍,
我们在本书中也遵循这种用法。

const 引用可以初始化为不同类型的对象或者初始化为右值(第 2.3.1
节),如字面值常量:
int i = 42;
// legal for const references only
const int &r = 42;
const int &r2 = r + i;
同样的初始化对于非 const 引用却是不合法的,而且会导致编译时错误。
其原因非常微妙,值得解释一下。
观察将引用绑定到不同的类型时所发生的事情,最容易理解上述行为。假如我们
编写
double dval = 3.14;
const int &ri = dval;
编译器会把这些代码转换成如以下形式的编码:
int temp = dval; // create temporary int from the double
const int &ri = temp; // bind ri to that temporary
如果 ri 不是 const,那么可以给 ri 赋一新值。这样做不会修改 dval,
而是修改了 temp。期望对 ri 的赋值会修改 dval 的程序员会发现 dval 并没
90
有被修改。仅允许 const 引用绑定到需要临时使用的值完全避免了这个问题,
因为 const 引用是只读的。
非 const 引用只能绑定到与该引用同类型的对象。
const 引用则可以绑定到不同但相关的类型的对象或绑定到右值


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值