gpt4 book ai didi

C++ 对非 Const 对象的 Const 引用与对非 Const 对象的非 Const 引用之间的区别

转载 作者:太空宇宙 更新时间:2023-11-04 15:00:06 27 4
gpt4 key购买 nike

如果引用的对象不是 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com