Initialization and References to const

今天读到《C++ Primer》第五版第2.4.1节 References to const 讲到了引用和被引用的对象类型必须匹配的第一个例外,就是有const关键字存在的情况。书中是这样描述的:

The first exception is that we can initialize a reference to const from any expression that can be converted to the type of the reference

后面举了一个例子:

double dval = 3.14;
const int &ri = dval;

当将引用绑定到与当前引用类型不同的一个对象时,编译器做了如下操作:

const int temp = dval;
const int &ri = temp;

也就是用一个临时变量存储类型转换后的值。
如果编译器允许这种写法int &ri = dval;那么ri = 3;只会使得临时变量的值发生变化,并不会影响dval的值,所以这样操作是没有意义的,结果是编译器判定这样的写法为非法。结论是对于引用类型和被引用对象类型不一致的情况(前提是可相互转换),必须使用const关键字。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容