【问题标题】:How is it possible for a const T& to refer to a literal? [duplicate]const T& 怎么可能引用文字? [复制]
【发布时间】:2020-09-16 20:11:33
【问题描述】:

我的理解是const T& 是通过const T *const 在内部实现的。如果是这样,下面的代码如何有效(因为我们不能取 7 的地址)?

const int& i = 7;

或者编译器在这里做了什么?如果有,是什么?

【问题讨论】:

  • 你的理解是错误的。
  • 引用在内部实现以满足其规范。是否涉及到指针与判断代码是否有效无关,只是说
  • 别忘了As-if Rule。如果您无法分辨出可观察行为的差异,编译器会尽一切努力为您提供更快的程序。

标签: c++ move-semantics value-categories


【解决方案1】:

您不能获取像 7 这样的文字地址,但可以获取值为 7 的临时对象的地址。

认为那条线相当于

const int unnamed_temprary_variable = 7;
const int& i = unnamed_temprary_variable;

或者编译器在这里做了什么?如果有,是什么?

编译器做了一些类似于我提到的两行的事情,但这不是一个技巧。语言要求。

在 SO 中搜索“延长临时人员的生命周期”结果为 a long list

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-09
    • 2019-03-24
    • 2015-02-27
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 2016-09-09
    • 2021-05-16
    相关资源
    最近更新 更多