ifstream
和ofstream
用于文件中的输入和输出,并且fstream
可以完成它们的任务,但不能从ifstream
和ofstream
继承,这是代码重复还是其他?
最佳答案
您必须向作者Bjarne Stroustrup提出确切的答案。在1985年的USENIX session 论文集上发表的有关iostream的原始论文中,他似乎非常强调效率:
因此,这可能是原因。
我猜您可以将通用文件I/O功能提取到mixin中,但这需要virtual
继承才能实现菱形继承,这将在访问底层basic_filebuf
时增加额外的间接访问。
另外,由于打开文件后通常无法更改文件的读/写模式,因此,将fstream
转换为ifstream
或ofstream
会产生不一致之处,因为您会得到可写的ifstream
或可读的ofstream
。
关于c++ - 为什么fstream不从c++中的ifstream和ofstream继承?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50817784/