Почему fstream не наследуется от ifstream и ofstream в C++?
1 ответов
встроенные расширенные функции используются для основных операций (например, "поместить символ в буфер"), поэтому основные накладные расходы имеют тенденцию быть одним вызовом функции на простой объект (целое число, строка и т. д.) записанный (или прочитанный) плюс один вызов функции в буфер переполнение.
так что это может быть причиной.
Я думаю, что вы мог бы извлечение общих функций ввода-вывода файлов в mixin, но для этого потребуется virtual
наследование, чтобы разрешить наследование алмазов, которое добавило бы дополнительную косвенность при доступе к базовому basic_filebuf
.
кроме того, как файл режим чтения/записи обычно не может быть изменен после открытия файла, будучи в состоянии бросить fstream
to ifstream
или ofstream
создаст несоответствия, поскольку вы можете получить записываемый ifstream
или читаемого ofstream
.