c ++为什么const&可以获得const值吗?

时间:2014-07-21 11:22:06

标签: c++

我理解为什么int& x=1是非法的(你不能引用常数值),但我不明白为什么const int& x=1合法?你怎么能参考数字“1”?它甚至不是一个定义的变量。

编辑:我读了这篇文章中给出的答案:What happens when I assign a temporary int to a const reference in C++?但有人可以解释他的意思是什么“表达式f(1)返回的临时值的生命周期将延长其生命周期。对于const引用来说是唯一的。“?所以文字是否作为int存储在堆栈上?谢谢!

5 个答案:

答案 0 :(得分:3)

  

(你不能引用常数值)

你几乎得到了它。

您不能对常量值进行非常量引用。

您可以对常量值进行常量引用。 (这将所述值的生命周期延长到该参考的生命周期)。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

这是一种C ++语言功能。 Click here以获得简单的解释。

修改

从链接:

  

通常,临时对象只会持续到完全结束   它出现的表达方式。但是,C ++故意指定   将临时对象绑定到堆栈上对const的引用   延长临时寿命至终身寿命   引用自身,从而避免了本来会有的共同点   悬挂参考错误

答案 3 :(得分:0)

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

答案 4 :(得分:-1)

因为C ++这么说。语言以这种方式定义。语言创作者决定允许它。