【发布时间】:2019-05-13 16:25:20
【问题描述】:
看看这个表达式:
T t;
T& ref = t;
ref 表达式是 lvalue 还是 rvalue? 我相信它是 rvalue,因为 ref 没有“指定函数或对象” :
"一个左值(历史上称为左值,因为左值可能出现在 赋值表达式的左侧)指定一个函数 或一个对象。”
[开放标准草案 n3092]
根据cppreference,引用不是对象。
“以下实体不是对象:值、引用 [...]”
我有疑问,因为ref 在= 的左侧。
【问题讨论】:
-
ref本身,作为一个实体,不是一个对象。不过,expressionref确实指定了一个对象。不要混合实体本身和仅由实体名称组成的 表达式。这些是不同的东西,它们的处理方式不同。 -
@tadman 我没有使用类对象定义。请参阅我放在那里的 cppreference 链接。
-
@AnT 表达式
ref指定了哪个对象?这就是我不明白的。对象会是t,一旦ref是它的别名? -
复制?还是相关的? stackoverflow.com/questions/3601602/…
-
它是一个对 T 对象的左值引用。en.cppreference.com/w/cpp/language/reference
标签: c++ c++11 move-semantics rvalue