Upozornění C26443
Přepsání destruktoru by nemělo používat explicitní specifikátory override ani virtual.
Toto upozornění bylo odebráno v sadě Visual Studio 16.8, aby odráželo změny C.128 v pokynech pro C++ Core Guidelines.
C++ Core Guidelines
C.128: Virtuální funkce by měly určovat přesně jednu z virtuálních, přepsání nebo konečných funkcí.
Aktuální konsensus o základních pokynech spočívá v vyloučení destruktorů z doporučení "explicitně přepsat".
Notes
- Pravidlo označuje přepsání destruktorů, které explicitně používají specifikátory "virtual" nebo "override".
- Destruktory mohou stále používat specifikátor "final" z důvodu jeho speciální sémantiky.
- Upozornění se zobrazují u definic funkcí, ne deklarací. Může to být matoucí, protože definice nemají virtuální specifikátory, ale upozornění je stále vhodné.
Název analýzy kódu: NO_EXPLICIT_DTOR_OVERRIDE
Příklad: Explicitní přepsání
class Transaction {
public:
virtual ~Transaction();
// ...
};
class DistributedTransaction : public Transaction {
public:
~DistributedTransaction() override { // C26443
// ...
}
};
Viz také
C.128: Virtuální funkce by měly přesně určovat jednu z virtuálních, přepisovaných nebo konečných