Two commits are split out from #16710 to make reviewing easier.
From C++ FAQ:
C.128: Virtual functions should specify exactly one of virtual, override, or final Reason Readability. Detection of mistakes. Writing explicit
virtual
,override
, orfinal
is self-documenting and enables the compiler to catch mismatch of types and/or names between base and derived classes. However, writing more than one of these three is both redundant and a potential source of errors.