为什么fstream不是继承自c++中的ifstream和ofstream?
Why fstream is not inherited from ifstream and ofstream in c++?
ifstream
和ofstream
用于文件中的输入和输出,fstream
可以完成它们的任务但不继承自ifstream
和ofstream
, 这个代码是重复还是别的什么?
您必须向作者 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
转换为 ifstream
或 ofstream
会创建不一致,因为您可以获得可写的 ifstream
或可读的 ofstream
.
ifstream
和ofstream
用于文件中的输入和输出,fstream
可以完成它们的任务但不继承自ifstream
和ofstream
, 这个代码是重复还是别的什么?
您必须向作者 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
转换为 ifstream
或 ofstream
会创建不一致,因为您可以获得可写的 ifstream
或可读的 ofstream
.