Я обнаружил это на веб-сайте, когда читал о виртуальном наследовании в 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 ++ использует дополнительный уровень косвенного обращения для доступа к виртуальному классу, обычно с помощью указателя
может кто-нибудь объяснить это?