我理解为什么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存储在堆栈上?谢谢!
答案 0 :(得分:3)
(你不能引用常数值)
你几乎得到了它。
您不能对常量值进行非常量引用。
您可以对常量值进行常量引用。 (这将所述值的生命周期延长到该参考的生命周期)。
答案 1 :(得分:1)
允许使用const引用的第二种情况,因为这样就创建了一个int
类型的临时对象,引用引用了这个临时对象。
答案 2 :(得分:0)
这是一种C ++语言功能。 Click here以获得简单的解释。
修改强>
从链接:
通常,临时对象只会持续到完全结束 它出现的表达方式。但是,C ++故意指定 将临时对象绑定到堆栈上对const的引用 延长临时寿命至终身寿命 引用自身,从而避免了本来会有的共同点 悬挂参考错误
答案 3 :(得分:0)
在这种情况下,你有一个常量值的常量引用,这意味着创建一个临时变量的整个生命周期与引用的生命周期绑定。
答案 4 :(得分:-1)
因为C ++这么说。语言以这种方式定义。语言创作者决定允许它。