码迷,mamicode.com
首页 > 编程语言 > 详细

C++ const引用

时间:2020-02-23 17:57:36      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:读取   为什么   ++   同步   block   影响   类型转换   c++   变量   

编译器会为const引用创建临时变量

当使用const关键字对引用加以限定后,引用就可以绑定到临时数据了。为什么?

编译器会为临时数据创建一个新的、无名的临时变量,并将临时数据放入该临时变量中,然后再将引用绑定到临时变量。注意,临时变量也是变量,所有的变量都会被分配内存。

为什么编译器为常引用创建临时变量是合理的,而为普通引用创建临时变量就不合理呢?

我们知道,将引用绑定到一份数据后,就可以通过引用对这份数据进行操作了,包括读取和写入(修改);尤其是写入操作,会改变数据的值。而临时数据往往无法寻址,是不能写入的,即使为临时数据创建了一个临时变量,那么修改的也仅仅是临时变量里面的数据,不会影响原来的数据,这样就使得引用所绑定到的数据和原来的数据不能同步更新,最终产生了两份不同的数据,失去了引用的意义。

const 引用和普通引用不一样,我们只能通过 const 引用读取数据的值,而不能修改它的值,所以不用考虑同步更新的问题,也不会产生两份不同的数据,为 const 引用创建临时变量反而会使得引用更加灵活和通用。

const引用与类型转换

给引用添加 const 限定后,不但可以将引用绑定到临时数据,还可以将引用绑定到类型相近的数据,这使得引用更加灵活和通用,它们背后的机制都是临时变量。

注意:引用类型的函数形参尽可能地使用const

C++ const引用

标签:读取   为什么   ++   同步   block   影响   类型转换   c++   变量   

原文地址:https://www.cnblogs.com/xiaobaizzz/p/12350657.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!