Использует ли какая-либо реализация C++ множественное наследование для внутреннего использования?

Просто быстрый глупый вопрос:

Мне было интересно, использует ли C++ функцию множественного наследования, предоставляемую виртуальным наследованием внутри. Я точно знаю, что для шаблонных реализаций, таких как структуры данных, предоставляемые STL (например, std::vector <>), нельзя использовать такую ​​функцию, но как насчет некоторых других объектов, таких как, например, потоки.

Я знаю, что множественное наследование может быть полезно в некоторых случаях (например, для перекрестного делегирования), но я чувствую, что мне следует избегать этого, если разработчики C++ решили избегать использования такой функции в своем коде.

Спасибо всем!

1 ответ

iostream использует множественное и виртуальное наследование; особенно, std::basic_iostream наследуется от std::basic_istream а также std::basic_ostream и оба они наследуют от std::basic_ios (с виртуальным наследованием).

При этом iostream широко не рассматривается как пример отличного дизайна, поэтому воспринимайте эту информацию как чистую монету (= да, в стандарт включены классы, использующие множественное и виртуальное наследование), а не как знак хорошей практики.

Другие вопросы по тегам