继承自std :: iostream,为什么这样实现?

时间:2016-05-18 07:36:46

标签: c++ std iostream subclassing

通过查看标准库文档,似乎对于子类化iostream,除了通过重载溢出和下溢来实现streambuf类之外别无选择。

在某些情况下,这是一个好主意。但是当你想要实现一个iostream类来包装已经缓冲的设备(压缩库,加密库等等)时,它似乎真的不方便,因为:

  • 如果设置零大小的缓冲区,例如使用setp(nullptr,nullptr),则每个字节将调用一次溢出,即使使用大缓冲区调用iostream :: write函数,这在性能上似乎很差< / LI>
  • 如果底层设备已经缓冲并接受块写入,并且我们只想编写一个包装器,那么实现一个功能齐全的缓冲区会增加无用的复杂性。

我错过了什么吗?为什么不能简单地重载iostream write()和read()?

0 个答案:

没有答案