【发布时间】:2019-02-05 18:43:32
【问题描述】:
如果引用的对象不是 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++ 程序员倾向于将短语“reference to const”缩写为 “常量参考。”这个缩写是有道理的——如果你记得它 是一个缩写。 从技术上讲,没有 const 引用。参考不是 对象,因此我们不能将引用本身设为 const。确实,因为有 没有办法让引用指向不同的对象,在某种意义上所有 引用是常量。引用是指 const 还是 nonconst 类型影响我们可以使用该引用做什么,而不是我们是否可以改变 引用本身的绑定。”
我认为这意味着当引用非 const 对象时将引用设为“const”绝对没有任何作用。我们不妨在定义那个引用时去掉那个 const 关键字。
在此询问此问题以进行确认。
编辑:看起来我最初的猜想是错误的。我现在明白了对非 const 对象的 const 引用确实有一个目的:防止引用修改对象。非 const 对象仍然可以通过其他方式修改,但不能通过此 const 引用。
谢谢大家。
【问题讨论】:
-
“我认为这意味着当引用非 const 对象时将引用设为“const”绝对没有任何作用。”你想错了