Для устранения неоднозначности используется виртуальное наследование.

ел это на веб-сайте, читая о виртуальном наследовании в C ++

Когда используется множественное наследование, иногда необходимо использовать виртуальное наследование. Хорошим примером для этого является стандартная иерархия классов iostream:

//Note: this is a simplified description of iostream classes

class  ostream: virtual public ios { /*..*/ }
class  istream: virtual public ios { /*..*/ }

class iostream : public istream, public ostream { /*..*/ } 
//a single ios inherited

Как C ++ гарантирует, что существует только один экземпляр виртуального члена, независимо от количества производных классов?C ++ использует дополнительный уровень косвенности для доступа к виртуальному классу, обычно с помощью указателя, Другими словами, каждый объект в иерархии iostream имеет указатель на общий экземпляр объекта ios. Дополнительный уровень косвенности имеет небольшое снижение производительности, но это небольшая цена.

меня смущает утверждение:

C ++ использует дополнительный уровень косвенности для доступа к виртуальному классу, обычно с помощью указателя

Кто-нибудь может объяснить это?

Ответы на вопрос(4)

Ваш ответ на вопрос