答案 0 :(得分:3)
你必须要求作者Bjarne Stroustrup作出明确答复。在1985年USENIX Proceedings上发表的关于iostreams的原始论文中,他似乎非常重视效率:
内联扩展函数用于基本操作(如“将字符放入缓冲区”),因此基本开销往往是每个简单对象(整数,字符串等)写入(或读取)的一个函数调用每个缓冲区溢出加一个函数调用。
所以这可能是原因。
我猜你可以将常见文件I / O功能提取到mixin中,但这需要virtual
继承才能允许钻石继承,这会增加额外的间接性访问基础basic_filebuf
。
此外,由于文件读取/写入模式通常无法在文件打开后更改,因此能够将fstream
投射到ifstream
或ofstream
会产生不一致得到可写的ifstream
或可读的ofstream
。