Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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