【问题标题】:How const reference bound to rvalueconst 引用如何绑定到右值
【发布时间】:2015-12-23 12:18:44
【问题描述】:

我看过很多关于将 const 引用绑定到右值的常见问题解答帖子。 有人说是因为系统生成了一个临时对象来绑定到引用,有人说这只是一个抽象的系统规则,它可能并没有真正做到这一点。那么我应该跟随哪一方呢?有人可以解释一下将 const 引用绑定到右值的真实机制,或者只是简单地给我找一个相关的并确认准确的链接。非常感谢!

【问题讨论】:

  • 重点是,这就是语言所说的它必须工作的方式。在不同的情况下,“幕后”发生的事情会有所不同,即使是同一个编译器也是如此。关键是,你不应该关心。您可以随时检查生成的程序集,但这很痛苦。
  • @BoBTFish 哦,这意味着你支持第二点,对吧?但是根据他们解释的方式,一些高级代表似乎对第一点非常肯定..
  • 感谢您的努力和链接!

标签: c++ reference


【解决方案1】:

两者都是正确的。您必须了解 C++ 是一种抽象。您的计算机执行的代码看起来一点也不像。

当您将一个临时值绑定到一个 const 引用时,您可以想象各种 C++ 机制来表示您的编译器是如何实现该功能的。或者您可以接受它确实 使这项工作,并且您的编译器是一个黑匣子,您不需要对其内部进行推理。出于所有意图和目的,两者无法区分。这就是构建模型的全部意义所在。

如果您真的、真的、真的想知道您的特定编译器在特定情况下是如何实现特定代码的,那么您必须成为该编译器源代码方面的专家。这是一个非常高级的话题,通常世界上只有少数人了解编译器在内部做什么。成为其中一员通常不值得花费时间和投资。1

1 虽然我相信他们会非常感谢您的额外帮助!毕竟,他们最终需要“传递火炬”。

【讨论】:

  • 感谢您的努力。那我就按照你的想法去做:-)
  • @Des1gnWizard:哪一个? ;)
猜你喜欢
  • 1970-01-01
  • 2010-11-21
  • 2017-04-13
  • 2013-07-04
  • 2017-04-15
  • 2017-03-12
  • 2021-09-09
  • 2014-01-02
  • 1970-01-01
相关资源
最近更新 更多