Почему библиотека ввода-вывода и библиотека диагностики используют наследование?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему библиотека ввода-вывода и библиотека диагностики используют наследование?

Сообщение Anonymous »

Большая часть Стандартной библиотеки C++ использует шаблоны, а не наследование для реализации полиморфизма. Это хорошо известная тема о том, почему¹. И на эту тему есть сотни видеороликов и сообщений в блогах.
Однако, что касается частей стандартной библиотеки, которые используют наследование, я могу только думать о
  • библиотека диагностики, в которой все исключения, сгенерированные стандартной библиотекой, наследуются от std::Exception,
  • и ввода/ выходная библиотека, содержащая дюжину классов, связанных между собой иерархией наследования, которая также имеет ромб.
Мой вопрос: какие особые требования/ ограничения/цели/что-то, которым должны удовлетворять эти две части стандартной библиотеки, что требует (или требует!²) от них использования наследования? ³
(¹) Да, вопрос относится к STL. Но я думаю, даже принимая двусмысленность, я думаю, что диспропорция между шаблонными и виртуальными частями библиотеки все еще сохраняется.
(²) Интересно, были бы эти две библиотеки разработаны по-разному, на основе Модули C++20.
(³) Уточнение: я не ищу ответов типа (со ссылкой на диагностическую библиотеку) "О, это довольно просто! Это потому что вы хотите, чтобы std::logic_error, std::runtime_error и другие исключения реализовывали то, что, поэтому вы можете вызвать .what для исключения, фактически не зная его конкретного типа !", потому что однопроходные алгоритмы также "хотят", чтобы их входные данные итераторов реализовывали операторы++ и оператор*, но они не требуют, чтобы все итераторы имели общий базовый класс! р>

Подробнее здесь: https://stackoverflow.com/questions/791 ... nheritance
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»