【问题标题】:need for deriving iostream from istream and ostream需要从 istream 和 ostream 派生 iostream
【发布时间】:2020-02-23 15:25:04
【问题描述】:

在学习I/O时遇到:

iostream:istream从流中读取,ostream写入流,iostream读写流:派生自istream和ostream

如果istreamostream 做同样的工作,需要继承什么?

【问题讨论】:

  • 他们不做同样的工作。

标签: c++ io


【解决方案1】:

正是通过使iostream 继承自istreamostream,您将获得一个支持输入和输出以及两个接口的类(来自istreamostream)。这并不意味着功能是重复的,只是意味着istreamostream 的接口及其实现正在被重用。

【讨论】:

    【解决方案2】:

    作家和读者的原型是

    class MyClass;
    std::ostream& operator<< (std::ostream stream&, const MyClass &obj)
    {
        obj->WriteTo(stream);
        return stream;
    }
    
    std::istream& operator>> (std::istream stream&, MyClass &obj)
    {
        obj->ReadFrom(stream);
        return stream;
    }
    

    这些函数(尤其是 writer)在 MyClass'es 成员上调用较低级别的流函数。

    std::iostream 派生自std::istreamstd::ostream 意味着您可以将std::iostream 的实例传递给任一函数,它会自动传入std::iostream 的正确部分。

    std::istreamstd::ostream 静态派生自 std::ios,其中包含它们的公共代码。

    【讨论】:

      猜你喜欢
      • 2011-07-07
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      相关资源
      最近更新 更多