Condividi tramite


Avviso C26433

La funzione deve essere contrassegnata con override

Linee guida di base di C++

C.128: Le funzioni virtuali devono specificare esattamente uno dei valori virtuali, di override o finali

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
        //...
    }
};

Vedi anche

C.128: Le funzioni virtuali devono specificare esattamente uno dei valori virtuali, di override o finali