在C ++ Primer 5th Edition中关于const引用的部分中,有一个小的示例块:
int i = 42;
const int &r1 = i; // we can bind a const int& to a plain int object
const int &r2 = 42; // ok: r1 is a reference to const
const int &r3 = r1 * 2; // ok: r3 is a reference to const
int &r4 = r * 2; // error: r4 is a plain, non const reference
在第四行,我只是好奇恒定引用的常量引用如何能够成功地将该值乘以2.当r1引用i时,不会发生转换,使一切都变为常量吗?或者第4行中的表达式是否独立于r3?
答案 0 :(得分:3)
在这一行
const int& r3 = r1 * 2;
创建临时int
并从初始化表达式r1 * 2
进行复制初始化,然后将r3
绑定到临时表达式。除了评估r1
修改3 * 2
之外,这不会修改3
的引用。