gpt4 book ai didi

c++ - 为什么命名右值引用是左值表达式?

转载 作者:太空狗 更新时间:2023-10-29 20:50:09 25 4
gpt4 key购买 nike

我知道命名引用是左值:

int x = 1;
int& ref1 = x;
int&& ref2 = std::move(x);

我已经阅读了解释 — 那是因为我们可以获取那些 ref1ref2 的地址。

但是当我们获取一个引用的地址时,我们实际上获取了被引用对象的地址,不是吗?所以这个解释似乎并不正确。

那么为什么命名引用是左值?

最佳答案

根据 [expr.prim.id.unqual] (8.1.4.1 不合格的名称):

[...] The expression is an lvalue if the entity is a function, variable, or data member and a prvalue otherwise; it is a bit-field if the identifier designates a bit-field ([dcl.struct.bind]).

根据 [basic]/6 :

A variable is introduced by the declaration of a reference other than a non-static data member or of an object. The variable's name, if any, denotes the reference or object.

声明

int&& ref2 = std::move(x);

是“对非静态数据成员以外的引用的声明”。因此,ref2 表示的实体是一个变量。所以表达式 ref2 是一个左值。

关于c++ - 为什么命名右值引用是左值表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56316766/

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