Avertissement C26435
La fonction 'symbol' doit spécifier exactement l’une des valeurs 'virtual', 'override' ou 'final' (c.128)
C++ Core Guidelines
Pour améliorer la lisibilité, le type de comportement virtuel doit être indiqué clairement et sans redondance inutile. Même si plusieurs spécificateurs virtuels peuvent être utilisés simultanément, il est préférable de spécifier un à la fois pour souligner l’aspect le plus important du comportement virtuel. L’ordre d’importance suivant est apparent :
- fonction virtuelle simple ;
- fonction virtuelle qui remplace explicitement sa base ;
- fonction virtuelle qui remplace sa base et fournit l’implémentation finale dans la chaîne d’héritage actuelle.
Notes
- Cette règle ignore les destructeurs, car ils ont des règles spéciales concernant la virtualité.
- 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 approprié.
Nom de l’analyse du code : SINGLE_VIRTUAL_SPECIFICATION
Exemple : spécificateur redondant
class Ellipse : public Shape {
public:
void Draw() override {
//...
}
};
class Circle : public Ellipse {
public:
void Draw() override final { // C26435, only 'final' is necessary.
//...
}
};