c++ const 引用

const引用是指向const对象用。

const int i = 10;
const int &ref = i;

可以读取ref,但不能修改。这样做是有意义的,因为i本身就不可修改,当然也不能通过ref来修改了。所以也就有const变量赋值给非const引用是非法的。

int &ref1 = i; // error: nonconst reference to a const object

非const引用是指向非const类型变量的引用。

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

// legal for const references only
int i = 10;
const int & ref = 42;
const int & ref1 = r + i;

double d = 3.14;
const int &ref2 = d;

以绑定到不同类型的ref2为例解释原因,编译器会把ref2相关的代码转换如下:

int temp = d;
const int &ref2 = temp; // bind ref2 to temporary

ref2实际上是绑定到一个临时变量上,如果ref2不为const,那么按道理就可以通过修改ref2而修改d的值,但实际上d并不会改变。所以为了避免这个问题,ref2只能是const。

非const引用只能绑定到与该引用同类型的对象,const引用则可以绑定到不同但相关的类型的对象或绑定到右值。
原文链接: https://www.cnblogs.com/zhuyf87/archive/2013/01/30/2883686.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/77204

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午5:50
下一篇 2023年2月9日 下午5:51

相关推荐