如果引用的对象不是 const 对象,那么引用“const”关键字的目的是什么? r1 和 r2 的作用(如下)有什么不同吗?
int i = 42; // non const object
const int &r1 = i; // const reference to non const object
int j = 25; // non const object
int &r2 = j; // non const reference to non const object
引用自 CPP Primer 5th:
“C++ 程序员倾向于将短语“对常量的引用”缩写为 “常量引用。”这个缩写是有道理的——如果你还记得的话 是缩写。 从技术上讲,没有 const 引用。引用不是 对象,所以我们不能使引用本身为常量。的确,因为有 没有办法使引用引用不同的对象,在某种意义上所有 引用是常量。引用是引用 const 还是 nonconst 类型影响我们可以用那个引用做什么,而不是我们是否可以改变 引用本身的绑定(bind)。”
我认为这意味着在引用非 const 对象时将引用设为“const”绝对没有任何作用。我们不妨在定义该引用时去掉该 const 关键字。
在这里问这个问题是为了确认。
编辑:看来我最初的猜想是错误的。我现在明白,对非 const 对象的 const 引用确实有一个目的:防止引用修改对象。非 const 对象仍然可以通过其他方式修改,但不能通过此 const 引用。
谢谢大家。
最佳答案
“如果引用的对象不是 const 对象,引用的“const”关键字的目的是什么?” 目的是防止该引用被用来修改它所引用的对象。
int i = 42; // non const object
const int &r1 = i; // const reference to non const object
r1 = 6 * 9; // error, r1 cannot be used to modify i;
关于C++ 对非 Const 对象的 Const 引用与对非 Const 对象的非 Const 引用之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52103491/