2.4.1const的引用

2.4.1const的引用

把引用绑定到const对象上,就像绑定到其他对象上一样,我们称之为对常量的引用。与普通引用不同的是,对常量的引用不能被用作修改她所绑定的值。

const int ci=1024;
const int &r1=ci;//正确:引用及其对应的对象都是常量
r1=42;//错误:r1是对常量引用,const限制修改r1的值;另一方面r1=42等价于ci=42,但ci由const限定,不可更改值
int &r2=ci;//错误:试图让一个非常量引用指向一个常量对象。
//比较上一语句,没有const限定r2后,则允许r2=x(某一值),但r2绑定的对象是const不允许这样操作,所以两者产生矛盾,系统报错

初始化和对const的引用
2.3.1节中提到,引用的类型必须和绑定的对象类型严格匹配。且引用只能绑定到对象上,而不能与字面值或某个表达式的计算结果绑定在一起。这里将介绍第一种例外情况
在初始化常量引用时允许用任意表达式作为初始值,只要该表达式的结果能转换成引用的类型即可。尤其,允许为一个常量引用绑定非常量的对象、字面值、甚至是一个表达式:

int i=42;
const int &r1=i;//允许将const int&绑定到一个普通int对象上
const int &r2=42;//正确:r2是一个常量引用
int &ri=42;//错误
const int&r3=r1*2;//正确:允许为一个常量引用绑定到非常量表达式中

要想能清楚例外情况,最简单的办法是能清楚当一个常量引用被绑定到另外一种类型上时到底发生了什么:
double dval=3.14; const int &ri=dval;
此处ri引用了一个int型的数。对ri的操作应该是是整数运算,但dval却是一个双精度浮点数而非整数。因此为了确保让ri绑定一个整数,编译器把上述代码变成了如下形式:

const int temp=dval;//由双精度浮点数生成一个临时的整型常量
const int &ri=temp;//让ri绑定到这个临时量上

探讨当ri不是常量时(前面不加const),就允许对ri赋值,这样就会改变ri所引用对象的值。但此时绑定的对象是临时量,而非dval。程序员既然让ri引用dval,肯定是想通过ri改变dval的数值啊,否则不多此一举??因此,在C++中把这种行为归为非法!

const int &r2=42;//正确:r2是一个常量引用

现在是不就可以解释,为什么常量引用初始化可使用字面值常量了,因为编译器会自动创建一个临时变量。
还是有点蒙?这里需要多琢磨下

需要说明的是,常量引用仅对引用可参与的操作做出了限定,对于引用的对象本身是不是一个常量未作限定。

int i=42;
int &r1=i;
const int &r2=i;
r1=0;//r1并非常量,i的值修改为0
r2=0;//错误,r2是一个常量引用,限定了不能通过引用修改  不是常量的i的值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: AVPro Video 2.4.1是一款高级视频播放器插件,专为Unity引擎开发的。这个版本是该插件的最新版本,带来了一些新的功能和改进。 首先,AVPro Video 2.4.1提供了强大的视频播放支持,包括高清、全屏、字幕、音频等功能。它可以播放各种视频格式,如MP4、MOV、OGV等,并具有出色的视频性能和质量。 其次,AVPro Video 2.4.1还提供了一些新的功能和改进,以提升开发者的工作效率。它支持动态加载和卸载视频文件,以及在运行时更改视频源的能力,方便开发者处理不同的场景需求。 此外,AVPro Video 2.4.1还具有平滑的视频播放功能,可防止视频卡顿或丢帧,并提供了对视频流的高级控制选项,如循环、播放倍速等。它还可以在移动设备上自动切换到适当的渲染路径,以提供最佳的性能和体验。 总的来说,AVPro Video 2.4.1是一款强大的视频播放器插件,为Unity开发者提供了丰富的功能和改进,使他们能够轻松地在游戏或应用程序中集成和管理视频播放。 ### 回答2: AVPro Video 2.4.1是一款用于Unity开发项目的专业视频播放插件。它为Unity开发者提供了强大的视频播放功能,可以轻松实现视频的播放、暂停、停止、快进、倒退等各种操作。 AVPro Video具有很多出色的特性。首先,它支持各种视频格式,包括MP4、MOV、FLV、MKV等等。这意味着你可以在项目中使用任何格式的视频文件,而不必担心格式兼容性的问题。 其次,AVPro Video还提供了优秀的视频渲染性能。它使用了GPU硬件加速,可以高效地渲染高分辨率的视频,保证了视频播放的流畅性和质量。 此外,AVPro Video还支持多个视频播放器实例的创建,每个实例可以独立播放不同的视频。这为多视频播放、画中画等功能提供了很大的便利。 AVPro Video还提供了各种高级功能,如视频剪辑、字幕支持、音频处理等。你可以轻松地对视频进行剪辑和编辑,并添加字幕、调整音频等。 最后,AVPro Video还提供了一套完善的API和文档,方便开发者使用和定制插件,满足各种项目需求。 综上所述,AVPro Video 2.4.1是一款功能强大的视频播放插件,为Unity开发者提供了出色的视频播放体验和丰富的功能,极大地简化了视频处理的工作流程。无论是开发游戏还是其他类型的应用,AVPro Video都是一个值得推荐的工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值