Warnung C26443

Außerkraftsetzungsdestruktoren sollten keine expliziten "Außerkraftsetzungen" oder "virtuellen" Bezeichner verwenden.

Diese Warnung wurde in Visual Studio 16.8 entfernt, um Änderungen an C.128 in den C++-Kernrichtlinien widerzuspiegeln.

C++ Core Guidelines

C.128: Virtuelle Funktionen sollten genau eine der virtuellen Funktionen angeben, außer Kraft setzen oder endgültig sein.

Der aktuelle Konsens über die Kernrichtlinien besteht darin, Destruktoren aus der Empfehlung "explizit außer Kraft setzen" auszuschließen.

Hinweise

  • Die Regel kennzeichnet Außerkraftsetzungsdestruktoren, die explizit "virtual" oder "override"-Bezeichner verwenden.
  • Destruktoren können aufgrund ihrer speziellen Semantik weiterhin den "endgültigen" Bezeichner verwenden.
  • Warnungen werden für Funktionsdefinitionen und keine Deklarationen angezeigt. Es kann verwirrend sein, da Definitionen keine virtuellen Bezeichner haben, aber die Warnung ist weiterhin geeignet.

Codeanalysename: NO_EXPLICIT_DTOR_OVERRIDE

Beispiel: Explizite Außerkraftsetzung

class Transaction {
public:
    virtual ~Transaction();
    // ...
};

class DistributedTransaction : public Transaction {
public:
    ~DistributedTransaction() override { // C26443
        // ...
    }
};

Siehe auch

C.128: Virtuelle Funktionen sollten genau eine der virtuellen Funktionen, außer Kraft setzen oder endgültig angeben.