Базовый класс должен быть объявлен виртуальным, только если он используется в иерархии алмазов
Базовый класс должен быть объявлен виртуальным, только если он используется в иерархии алмазов.
Это правило менее ограничительно, чем MISRA C++:2008 Rule 10-1-1
. Правило 10-1-1 запрещает использование виртуальной основы в любом месте вашего кода, потому что виртуальная основа может привести к потенциально запутанному поведению.
Правило 10-1-2 позволяет использовать виртуальные основы в одной ситуации, когда они полезны, то есть как общий базовый класс в иерархиях алмазов.
Для образца следующая иерархия алмазов нарушает правило 10-1-1, но не правило 10-1-2.
class Base {}; class Intermediate1: public virtual Base {}; class Intermediate2: public virtual Base {}; class Final: public Intermediate1, public Intermediate2 {};
Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».
Группа: Производные классы |
Категория: Требуемая |