Я действительно не вижу смысла в переопределении не виртуальных методов, так как он создает целый ряд потенциальных ошибок, где иногда вызывается исходный базовый и иногда дочерний метод.Полезно ли всегда отмечать не виртуальные методы с помощью final?
Следуя этой логике, метод всегда приходит к простому правилу: Можно ли переопределить этот метод? Если да - отметьте его virtual
, если нет - отметьте его final
.
Для меня все звучит хорошо, но мне интересно, не хватает ли я чего-то важного и почему никто не следует этому простому правилу?
A) вы не можете переопределить не виртуальные функции-члены. B) пытались ли вы пометить не виртуальную функцию-член как 'final'? – juanchopanza
Вы не можете переопределять не виртуальные методы, а только скрывать их, и вы не можете использовать 'final' для не виртуальных методов. – milleniumbug
Clang дает ошибку об этой ошибке: только функции виртуального участника могут быть помечены как «final», поэтому я бы пошел с «нет». – JVApen