C++ 对非 const 对象的 const 引用和对非 const 对象的非 const 引用之间的区别

2024-01-03

如果引用的对象不是 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 对象时将引用设置为“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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 对非 const 对象的 const 引用和对非 const 对象的非 const 引用之间的区别 的相关文章

随机推荐