Ostrzeżenie C26443
Zastępowanie destruktora nie powinno używać jawnych specyfikatorów "przesłonięcia" ani "wirtualnego".
To ostrzeżenie zostało usunięte w programie Visual Studio 16.8, aby odzwierciedlić zmiany w języku C.128 w podstawowych wytycznych dotyczących języka C++.
Podstawowe wytyczne dotyczące języka C++
C.128: Funkcje wirtualne powinny określać dokładnie jedną z wirtualnych, przesłonięć lub finalnych.
Obecny konsensus w sprawie podstawowych wytycznych polega na wykluczeniu destruktorów z zalecenia "jawnie przesłonięć".
Uwagi
- Flagi reguły zastępują destruktory, które jawnie używają specyfikatorów "virtual" lub "override".
- Destruktory mogą nadal używać specyfikatora "final" ze względu na jego specjalną semantyka.
- 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 odpowiednie.
Nazwa analizy kodu: NO_EXPLICIT_DTOR_OVERRIDE
Przykład: jawne "przesłonięcia"
class Transaction {
public:
virtual ~Transaction();
// ...
};
class DistributedTransaction : public Transaction {
public:
~DistributedTransaction() override { // C26443
// ...
}
};
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