Partage via


Avertissement C26433

La fonction doit être marquée avec override

C++ Core Guidelines

C.128 : Les fonctions virtuelles doivent spécifier exactement l’une des fonctions virtuelles, remplacées ou finales

Il n’est pas nécessaire au compilateur d’indiquer clairement qu’une fonction virtuelle remplace sa base. L’absence de override spécification peut entraîner des problèmes subtils pendant la maintenance si la spécification virtuelle change jamais dans la hiérarchie de classes. Elle réduit également la lisibilité et rend le comportement polymorphe d’une interface moins évident. Si une fonction est clairement marquée comme override, le compilateur peut case activée la cohérence de l’interface et aider à repérer les problèmes avant qu’ils se manifestent au moment de l’exécution.

Notes

Cette règle n’est pas applicable aux destructeurs. Les destructeurs ont leurs propres spécificités de virtualité.

La règle n’indique pas explicitement les fonctions marquées comme finalétant , qui est elle-même une variété spéciale de spécificateur virtuel.

Les avertissements s’affichent sur les définitions de fonction, et non sur les déclarations. Il peut être confus, car les définitions n’ont pas de spécificateurs virtuels, mais l’avertissement est toujours correct.

Nom de l’analyse du code : OVERRIDE_EXPLICITLY

Exemple : substitution implicite

class Shape {
public:
    virtual void Draw() = 0;
    // ...
};

class Ellipse : public Shape {
public:
    void Draw() { // C26433
        //...
    }
};

Voir aussi

C.128 : Les fonctions virtuelles doivent spécifier exactement l’une des fonctions virtuelles, remplacées ou finales