Avviso C26433
La funzione deve essere contrassegnata con
override
Linee guida di base di C++
Non è richiesto dal compilatore di dichiarare chiaramente che una funzione virtuale esegue l'override della relativa base. Se la specifica virtuale cambia mai nella gerarchia di classi, la mancata override
specifica può causare problemi sottili durante la manutenzione. Riduce anche la leggibilità e rende meno ovvio il comportamento polimorfico di un'interfaccia. Se una funzione è chiaramente contrassegnata come override
, il compilatore può controllare la coerenza dell'interfaccia e individuare i problemi prima che si manifestino in fase di esecuzione.
Note
Questa regola non è applicabile ai distruttori. I distruttori hanno specifiche di virtualità.
La regola non contrassegna le funzioni contrassegnate in modo esplicito come final
, che è un'ampia gamma speciale di identificatori virtuali.
Gli avvisi sono visualizzati nelle definizioni di funzione, non nelle dichiarazioni. Può generare confusione, poiché le definizioni non hanno identificatori virtuali, ma l'avviso è ancora corretto.
Nome dell'analisi del codice: OVERRIDE_EXPLICITLY
Esempio: override implicito
class Shape {
public:
virtual void Draw() = 0;
// ...
};
class Ellipse : public Shape {
public:
void Draw() { // C26433
//...
}
};