Базовый класс должен только быть объявлен виртуальный, если он будет использоваться в ромбовидной иерархии
Базовый класс должен только быть объявлен виртуальный, если он будет использоваться в ромбовидной иерархии.
Это правило менее строго, чем 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 {};
Базовый класс должен только быть объявлен виртуальный, если он будет использоваться в ромбовидной иерархии.
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
Группа: производные классы |
Категория: необходимый |