gpt4 book ai didi

c++ - 绑定(bind)类型为 T&& 的左值表达式

转载 作者:太空宇宙 更新时间:2023-11-04 11:49:47 25 4
gpt4 key购买 nike

在过去的几天里,我一直在努力掌握左值/右值引用背后的一个看似微不足道的原则。让我们定义一个新的右值引用:

int&& x = 12;

x 因此是 int&& 类型的左值表达式。由于 x 是一个左值,它可以绑定(bind)到一个相同类型的左值引用,即 int&& 类型的左值引用。这样的左值引用将被定义为:

int&& & ref_x = x; // non-working code, just for the sake of explanation

当然,不能显式定义对引用的引用,正确的绑定(bind)方式如下:

int& ref_x = x;

C++ Primer 报告了以下有关使用引用作为初始值设定项的内容:

when we use a reference as an initializer, we are really using the object to which the reference is bound

另一方面,左值引用必须匹配左值表达式的类型。我错过了什么?这种情况是否涉及引用崩溃?

谢谢。

最佳答案

不,x(作为表达式)是 int 类型的表达式。表达式值的类型永远不是引用。事实上,x 也是一个左值,因为它是一个命名的东西。

此外,没有对引用的引用,原因相同:引用绑定(bind)到值,而值永远不是引用。

如果您感到困惑,请不断告诉自己:表达式的值始终是对象类型。表达式的值 category 是 l 还是 r 只决定了该值可以绑定(bind)到什么样的东西;它对其类型没有影响。

关于c++ - 绑定(bind)类型为 T&& 的左值表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18816713/

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