Sdílet prostřednictvím


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