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

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

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

C++的常量引用

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

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