Просто быстрый глупый вопрос:
Мне было интересно, использует ли C ++ функцию множественного наследования, предоставляемую виртуальным наследованием внутри. Я точно знаю, что для шаблонных реализаций, таких как структуры данных, предоставляемые STL (std :: vector <> например) не может использовать такую функцию, но как насчет некоторых других объектов, таких как, например, потоки.
Я знаю, что множественное наследование может быть полезно в некоторых случаях (например, для перекрестного делегирования), но я чувствую, что мне следует избегать этого, если разработчики C ++ решили избегать использования такой функции в своем коде.
Спасибо всем!
iostream использует множественное и виртуальное наследование; особенно, std::basic_iostream
наследуется от std::basic_istream
а также std::basic_ostream
и оба они наследуют от std::basic_ios
(с виртуальным наследованием).
При этом iostream широко не рассматривается как пример отличного дизайна, поэтому воспринимайте эту информацию как чистую монету (= да, в стандарт включены классы, использующие множественное и виртуальное наследование), а не как знак хорошей практики.
Других решений пока нет …