Почему «виртуальный» необязателен для переопределенных методов в производных классах?C++

Программы на C++. Форум разработчиков
Anonymous
Почему «виртуальный» необязателен для переопределенных методов в производных классах?

Сообщение Anonymous »

Когда метод объявлен как виртуальный в классе, его переопределения в производных классах также автоматически считаются виртуальными, а язык C++ делает это ключевое слово виртуальным необязательным в этом случае:

Код: Выделить всё

class Base {
virtual void f();
};
class Derived : public Base {
void f(); // 'virtual' is optional but implied.
};
Мой вопрос: каково обоснование необходимости делать виртуальный необязательным?

Я знаю, что компилятору не обязательно сообщать об этом, но я думаю, что разработчики выиграют, если такое ограничение будет реализовано компилятором.

Например, иногда, когда я читаю чужой код, мне интересно, является ли метод виртуальным, и мне приходится отслеживать его суперклассы, чтобы определить это. А некоторые стандарты кодирования (Google) требуют обязательного включения ключевого слова virtual во все подклассы.

Подробнее здесь: https://stackoverflow.com/questions/296 ... ed-classes

Вернуться в «C++»