Когда метод объявлен как virtual
в классе, его переопределения в производных классах также автоматически считаются virtual
, и язык C ++ делает это ключевое слово virtual
необязательным в этом случае:
class Base {
virtual void f();
};
class Derived : public Base {
void f(); // 'virtual' is optional but implied.
};
Мой вопрос таков: каково обоснование того, что virtual
необязательно?
Я знаю, что компилятору не обязательно говорить об этом, но я думаю, что разработчики выиграют, если компилятор установит такое ограничение.
Например, иногда, когда я читаю чужой код, я задаюсь вопросом, является ли метод виртуальным, и мне нужно отследить его суперклассы, чтобы определить это. А некоторые стандарты кодирования ( Google ) делают обязательным использование ключевого слова virtual
во всех подклассах.