Правила программирования на С и С++. Главы 7-8 - Инициализируйте виртуальные базовые классы при помощи конструктора, используемого по умолчанию

ОГЛАВЛЕНИЕ

 

102. Смешения не должны наследоваться от чего попало.

103. Смешения должны быть виртуальными базовыми классами.

104. Инициализируйте виртуальные базовые классы при помощи конструктора, используемого по умолчанию.

Вы можете свести до минимума рассмотренные ранее проблемы, стараясь придерживаться следующих правил (многие смешения не могут соответствовать им всем, но вы делайте все от вас зависящее):

  • Если можно, то смешения не должны наследоваться от чего попало, тем самым полностью устраняя проблему ромбовидной иерархии при множественном наследовании.
  • Для смешения должна обеспечиваться возможность быть виртуальным базовым классом для того, чтобы не возникала проблема неопределенности в случае, если у вас все же получилась ромбовидная структура классов.
  • Если можно, то смешение должно всегда строиться с использованием только конструктора по умолчанию (не имеющего аргументов). Это упрощает оформление смешения в качестве виртуального базового класса, потому что вам не нужно будет заботиться о инициализации большей части наследуемого объекта. В конце концов, по умолчанию всегда используется конструктор по умолчанию.