Megosztás:


figyelmeztetés C26435

A "szimbólum" virtuális függvénynek pontosan meg kell adnia a "virtuális", a "felülbírálás" vagy a "végleges" (c.128) egyikét.

C++ alapvető irányelvek

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

Az olvashatóság javítása érdekében a virtuális viselkedést egyértelműen és szükségtelen redundancia nélkül kell megadni. Annak ellenére, hogy egyszerre több virtuális meghatározó is használható, célszerű egyenként megadni, hogy kiemeljük a virtuális viselkedés legfontosabb aspektusát. A következő fontossági sorrend látható:

  • egyszerű virtuális függvény;
  • virtuális függvény, amely explicit módon felülbírálja a bázisát;
  • virtuális függvény, amely felülbírálja a bázisát, és a jelenlegi öröklési lánc végső implementációját biztosítja.

Jegyzetek

  • Ez a szabály kihagyja a destruktorokat, mivel speciális szabályok vonatkoznak a virtualitásra.
  • 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: SINGLE_VIRTUAL_SPECIFICATION.

Példa: Redundáns kijelölő

class Ellipse : public Shape {
public:
    void Draw() override {
        //...
    }
};

class Circle : public Ellipse {
public:
    void Draw() override final { // C26435, only 'final' is necessary.
        //...
    }
    virtual void DrawCircumference() final { // C26435, should be neither 'virtual' nor 'final'.
        //...
    }
};

Lásd még

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