【问题标题】:Why do stream operators return references in C++?为什么流运算符在 C++ 中返回引用?
【发布时间】:2015-01-29 18:33:40
【问题描述】:

我知道索引运算符实现通常返回引用,以便可以设置和检索值,但为什么要流?

【问题讨论】:

    标签: c++ stream


    【解决方案1】:

    因此您可以将它们链接在一起。

    cout << "hello" << "how are you";
    

    之所以有效,是因为 cout &lt;&lt; "hello" 返回对 cout 的引用,以便 &lt;&lt; "how are you" 知道将自己放在那里。

    大多数运算符,例如+=,也这样做。

    【讨论】:

    • 加法一定要返回一个值,你的意思是+=?
    • @Barry 是的,我愿意,但思想贯穿始终,技术上加法返回一个值,该值也是对所述值的引用,不过我将其更改为 +=
    • @Dylan operator+ 绝对不应该返回引用。
    • @remyabel 不,它返回一个值,但在操作链接的上下文中,该值与引用的作用相同。
    • @DylanLawrence:这没有意义
    【解决方案2】:

    流不支持复制或赋值,因此任何传递或返回流的东西必须使用指针或引用。您不能在指针上使用重载运算符(不取消引用它),因为它们会尝试将内置运算符应用于指针本身。

    因此,返回引用是支持运算符链接的唯一选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多