繁体   English   中英

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

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

ifstreamofstream用于文件中的输入和输出,并且fstream可以执行它们的任务但不从ifstreamofstream继承,这个代码是重复还是别的?

fstream的层次结构

你必须要求作者Bjarne Stroustrup给出一个明确的答案。 在1985年USENIX Proceedings上发表的关于iostreams的原始论文中,他似乎非常重视效率:

内联扩展函数用于基本操作(如“将字符放入缓冲区”),因此基本开销往往是每个简单对象(整数,字符串等)写入(或读取)加上一个函数的函数调用每个缓冲区溢出调用。

这可能就是原因。

我想你可以将常见的文件I / O功能提取到mixin中,但是这需要virtual继承以允许钻石继承,这将在访问底层basic_filebuf时添加额外的间接。

此外,作为一个文件读/写模式通常不能一旦文件被打开改变,能够施展fstreamifstreamofstream会产生不一致,你可以得到一个可写ifstream或可读ofstream

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM