Почему «виртуальный» необязателен для переопределенных методов в производных классах?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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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