Ostrzeżenie C26433
Funkcja powinna być oznaczona za pomocą polecenia
override
Podstawowe wytyczne dotyczące języka C++
C.128: Funkcje wirtualne powinny określać dokładnie jedną z wirtualnych, przesłonięć lub finalnych
Kompilator nie musi wyraźnie stwierdzić, że funkcja wirtualna zastępuje jego bazę. Nieokreślinie override
może powodować subtelne problemy podczas konserwacji, jeśli specyfikacja wirtualna kiedykolwiek zmieni się w hierarchii klas. Obniża również czytelność i sprawia, że działanie polimorficzne interfejsu jest mniej oczywiste. Jeśli funkcja jest wyraźnie oznaczona jako override
, kompilator może sprawdzić spójność interfejsu i pomóc wykryć problemy przed ich manifestem w czasie wykonywania.
Uwagi
Ta reguła nie ma zastosowania do destruktorów. Destruktory mają własne specyfiki wirtualizacji.
Reguła nie flaguje funkcji jawnie oznaczonych jako final
, co jest samą specjalną odmianą specyfikatora wirtualnego.
Ostrzeżenia są wyświetlane w definicjach funkcji, a nie w deklaracjach. Może to być mylące, ponieważ definicje nie mają specyfikatorów wirtualnych, ale ostrzeżenie jest nadal poprawne.
Nazwa analizy kodu: OVERRIDE_EXPLICITLY
Przykład: niejawne zastępowanie
class Shape {
public:
virtual void Draw() = 0;
// ...
};
class Ellipse : public Shape {
public:
void Draw() { // C26433
//...
}
};
Zobacz też
C.128: Funkcje wirtualne powinny określać dokładnie jedną z wirtualnych, przesłonięć lub finalnych
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla