Megosztás:


Figyelmeztetés C26443

A felülíró destruktor nem használhat explicit "felülbírálást" vagy "virtuális" meghatározót.

Ez a figyelmeztetés el lett távolítva a Visual Studio 16.8-ban, hogy tükrözze a C.128 változásait a C++ alapvető irányelvekben.

C++ alapvető irányelvek

C.128: A virtuális függvények pontosan egy virtuális, felülbírálási vagy végleges értéket kell megadniuk.

A Core iránymutatásokra vonatkozó jelenlegi konszenzus az, hogy a destruktorok kimaradnak a "felülbírálás explicit módon" ajánlásból.

Jegyzetek

  • Az a szabály megjelöli azokat a destruktorokat, amelyek kifejezetten "virtuális" vagy "felülbírál" azonosítókat használnak.
  • A destruktorok a 'final' specifikátort továbbra is használhatják különleges szemantikája miatt.
  • A figyelmeztetések függvénydefiníciókon jelennek meg, nem deklarációkon. Ez zavaró lehet, mivel a definíciók nem rendelkeznek virtuális definiálókkal, de a figyelmeztetés továbbra is megfelelő.

Kódelemzés neve: NO_EXPLICIT_DTOR_OVERRIDE.

Példa: Explicit „override”

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

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

Lásd még

C.128: A virtuális függvényeknek pontosan egyet kell megadniuk a következők közül: virtuális, felüldefiniálás vagy véglegesít