C++ 为什么 Const& 可以获取 const 值?

c++ why const& can get const values?

本文关键字:获取 const 为什么 Const C++      更新时间:2023-10-16

我明白为什么int& x=1是非法的(你不能引用恒定值),但我不明白为什么const int& x=1是合法的?你怎么能提到数字"1"呢?它甚至不是一个已定义的变量

编辑:我读了这篇文章中给出的答案:当我在c++中为const引用分配临时int时会发生什么?但是有人能解释一下他的意思是"表达式f(1)返回的临时值的生命周期将被延长。"该规则对于const引用是唯一的。那么字面量是作为int存储在堆栈上还是不存储?谢谢!

(不能引用常量值)

你差点就成功了。

不能使用非常量引用常量值。

可以使用常量引用常量值。(它将所述值的生命周期扩展到该引用的生命周期)。

允许使用const引用的第二种情况,因为这样创建了一个int类型的临时对象,并且引用指向这个临时对象。

在这种情况下,您有一个常量引用到一个常量值,这意味着创建一个临时变量的整个生命周期都绑定到引用的生命周期。

这是c++语言的一个特性。点击这里查看简单的解释

编辑

从链接:

一般来说,一个临时对象只持续到满的结束它出现时的表情然而,c++故意指定将临时对象绑定到栈上const的引用将临时对象的生命周期延长为引用本身,从而避免了公共的悬摆指针错误

因为c++是这么说的。语言是这样定义的。语言的创造者决定允许它