为什么fstream不是继承自c++中的ifstream和ofstream?

Why fstream is not inherited from ifstream and ofstream in c++?

ifstreamofstream用于文件中的输入和输出,fstream可以完成它们的任务但不继承自ifstreamofstream, 这个代码是重复还是别的什么?

您必须向作者 Bjarne Stroustrup 寻求明确的答案。在他发表于 1985 年 USENIX Proceedings 的关于 iostreams 的原始论文中,他似乎非常强调效率:

Inline expanded functions are used for the basic operations (like "put a character into a buffer"), so the basic overhead tend to be one function call per simple object (integer, string, etc.) written (or read) plus one function call per buffer overflow.

所以这可能是原因。

我猜你 可以 将通用文件 I/O 功能提取到混入中,但这需要 virtual 继承才能允许菱形继承,这将在访问底层 basic_filebuf.

时添加额外的间接寻址

此外,作为文件 read/write 模式通常在文件打开后无法更改,能够将 fstream 转换为 ifstreamofstream 会创建不一致,因为您可以获得可写的 ifstream 或可读的 ofstream.