const 引用(c++primer笔记)

本文详细解释了C++中const引用的概念及使用方式。const引用能够绑定到const对象,并且可以指向不同类型的对象或右值。非const引用则只能绑定到非const对象。文章还探讨了这种设计如何确保对数据的操作权限不会从严格变得更宽松。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

const 引用是指向 const 对象的引用:

      const int ival = 1024;
      const int &refVal = ival;      // ok: both reference and object are const
      int &ref2 = ival;              // error: non const reference to a const object

可以读取但不能修改 refVal ,因此,任何对 refVal 的赋值都是不合法的。这个限制有其意义:不能直接对 ival 赋值,因此不能通过使用 refVal 来修改 ival

同理,用 ival 初始化 ref2 也是不合法的:ref2 是普通的const 引用,因此可以用来修改 ref2 指向的对象的值。通过 ref2ival 赋值会导致修改 const 对象的值。为阻止这样的修改,需要规定将普通的引用绑定到 const 对象是不合法的。

 

const 引用可以初始化为不同类型的对象或者初始化为右值(第 2.3.1 节),如字面值常量:

      int i = 42;
      //  legal for const references only
      const int &r = 42;
      const int &r2 = r + i;
总结:const引用可以用于连接const和非const对象,非const引用只能连接非const对象。也表明了权限只能越来越严格,不能越来越松。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值