Upozornění C26433
Funkce by měla být označena
override
C++ Core Guidelines
C.128: Virtuální funkce by měly přesně určovat jednu z virtuálních, přepisovaných nebo konečných
Kompilátor to nevyžaduje, aby jasně uvedl, že virtuální funkce přepíše její základ. Nezadání override
může způsobit drobné problémy během údržby, pokud se virtuální specifikace někdy změní v hierarchii tříd. Zároveň snižuje čitelnost a ztěžuje polymorfní chování rozhraní méně zřejmé. Pokud je funkce jasně označená jako override
, kompilátor může zkontrolovat konzistenci rozhraní a pomoci odhalit problémy předtím, než se projeví v době běhu.
Notes
Toto pravidlo se nevztahuje na destruktory. Destruktory mají vlastní specifika virtuality.
Pravidlo neoznačí funkce explicitně označené jako final
, což je sama o sobě zvláštní škálou virtuálních specifikátorů.
Upozornění se zobrazují u definic funkcí, ne deklarací. Může to být matoucí, protože definice nemají virtuální specifikátory, ale upozornění je stále správné.
Název analýzy kódu: OVERRIDE_EXPLICITLY
Příklad: Implicitní přepsání
class Shape {
public:
virtual void Draw() = 0;
// ...
};
class Ellipse : public Shape {
public:
void Draw() { // C26433
//...
}
};
Viz také
C.128: Virtuální funkce by měly přesně určovat jednu z virtuálních, přepisovaných nebo konečných