2 fat cai niao fat_cai_niao 于 2015.07.28 13:51 提问

c++ 中常量引用相关问题?
c++

int i = 42;
const int &r1 = i; //这句正确,我能理解。
const int &r2 = 42; // 这句我认为是错的,但书上给的是对的。。大家说这到底怎么回事呢?

3个回答

91program
91program   Ds   Rxr 2015.07.28 14:12
已采纳

请说明你认为错误的理由是什么?
这一句你认为错可能是因为赋值表达式后面是常量,但为什么不能是常量呢!

fat_cai_niao
fat_cai_niao 额。。好像又没懂。。书上说引用只能绑定在对象上,而不能与字面值或某个表达式的结果绑定在一起。。难道在常量引用里,这一规则就不适用了吗?
2 年多之前 回复
fat_cai_niao
fat_cai_niao 噢噢 我懂了 谢谢哈
2 年多之前 回复
oyljerry
oyljerry   Ds   Rxr 2015.07.28 14:08

C++的常量引用

如果是对一个常量进行引用,则编译器首先建立一个临时变量,然后将该常量的值置入临时变量中,对该引用的操作就是对该临时变量的操作。对常量的引用可以用其它任何引用来初始化;但不能改变。

fat_cai_niao
fat_cai_niao 这个书上说的是当常量引用的类型和引用对象类型不一致时,编译器是这样处理的。
2 年多之前 回复
sina_2831808769
sina_2831808769   Rxr 2015.07.28 20:36

如果是对一个常量进行引用,则编译器首先建立一个临时变量,然后将该常量的值置入临时变量中,对该引用的操作就是对该临时变量的操作。对常量的引用可以用其它任何引用来初始化;但不能改变。

Csdn user default icon
上传中...
上传图片
插入图片