【问题标题】:What does lvalue reference type mean左值引用类型是什么意思
【发布时间】:2014-08-02 21:10:21
【问题描述】:

秒。 5.4/1 N3797 说:

如果 T 是 左值引用类型 或右值,则结果是左值 如果 T 是右值引用,则引用函数类型和 xvalue 对象类型。

这是什么意思?我知道左值表达式是什么意思。我一直在尝试在标准中找到 lvalue reference type 定义,但我做不到。可以提供吗?

【问题讨论】:

  • 对于一般参考,see this page。对于价值类别(迟早你会找到它们),see this page。在这两者之间,我想你会找到你需要的。
  • @T.C.确实,我只是试图找到“左值引用类型”。

标签: c++ types


【解决方案1】:

术语左值引用是指其中一个&的引用,例如:

int &x = whatever;
int const &y = whatever;

在 C++03 中,左值引用是唯一的引用类型。在 C++11 中,添加了右值引用,因此创造了反义词 lvalue reference 来表示非右值引用。

左值引用可以绑定到左值和右值(限制非 const 左值引用不能绑定到临时对象);右值引用只能绑定到右值。

注意:universal references 可以绑定到左值或右值,绑定后它们的行为要么像左值引用,要么像右值引用。

【讨论】:

    【解决方案2】:

    lvalue reference 有 2 种类型,The C++ Programming Language 4th Edition 中描述如下,

    • non-constlvalue reference 指的是引用的用户可以写入的对象。
    • constlvalue reference 指的是一个常量,从引用用户的角度来看,它是不可变的。

    另外,

    • rvalue reference 指的是一个临时对象,引用的用户可以(并且通常会)修改它,假设该对象将不再被使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 2016-01-17
      • 2016-09-15
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多