парни я знаю этот вопрос, являются очень простыми, но я встретил в немногих публикациях (веб-сайты, книги) другой стиль виртуальной функции переопределения. То, что я имею в виду: если у меня есть базовый класс:
class Base
{
public:
virtual void f() = 0;
};
в некоторых публикациях я видел, что для переопределения этого некоторые авторы просто скажут:
void f();
и некоторые все еще повторили бы виртуальное ключевое слово прежде пусто. Какая форма перезаписи находится в хорошем стиле? Спасибо за Ваши ответы.
Это чисто дело вкуса. Можно привести некоторые слабые аргументы в пользу ценности одних стилей для самодокументирования по сравнению с отсутствием избыточности других.
Нет необходимости добавлять виртуальное ключевое слово в метод, который вы переопределяете в подклассе, поскольку этот квалификатор нельзя удалить, пропустив его в объявлениях подкласса.
Однако рекомендуется повторять ключевое слово virtual, поскольку оно документирует, какие производные функции являются виртуальными в базовом классе.
Это также рекомендуется в «Стандартном руководстве по высоконадежному кодированию C ++» .
, ссылка на которую содержится в FAQ по C ++ .
Лично я использую оба стиля: виртуальный
означает, что метод можно переопределить.
Итак, у нас есть два случая:
virtual
Template Pattern
), то не используйте ключевое слово virtual
Я думаю, это еще один способ (ab?) использования ключевого слова .