Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Du kan använda nyckelordet åsidosättning för att ange medlemsfunktioner som åsidosätter en virtuell funktion i en basklass.
Syntax
function-declaration override;
Anmärkningar
åsidosättning är kontextkänslig och har särskild betydelse endast när den används efter en medlemsfunktionsdeklaration. annars är det inte ett reserverat nyckelord.
Exempel
Använd åsidosättning för att förhindra oavsiktligt arvsbeteende i koden. I följande exempel visas var, utan att åsidosätta, medlemsfunktionens beteende för den härledda klassen kanske inte var avsett. Kompilatorn genererar inga fel för den här koden.
class BaseClass
{
virtual void funcA();
virtual void funcB() const;
virtual void funcC(int = 0);
void funcD();
};
class DerivedClass: public BaseClass
{
virtual void funcA(); // ok, works as intended
virtual void funcB(); // DerivedClass::funcB() is non-const, so it does not
// override BaseClass::funcB() const and it is a new member function
virtual void funcC(double = 0.0); // DerivedClass::funcC(double) has a different
// parameter type than BaseClass::funcC(int), so
// DerivedClass::funcC(double) is a new member function
};
När du använder åsidosättning genererar kompilatorn fel i stället för att tyst skapa nya medlemsfunktioner.
class BaseClass
{
virtual void funcA();
virtual void funcB() const;
virtual void funcC(int = 0);
void funcD();
};
class DerivedClass: public BaseClass
{
virtual void funcA() override; // ok
virtual void funcB() override; // compiler error: DerivedClass::funcB() does not
// override BaseClass::funcB() const
virtual void funcC( double = 0.0 ) override; // compiler error:
// DerivedClass::funcC(double) does not
// override BaseClass::funcC(int)
void funcD() override; // compiler error: DerivedClass::funcD() does not
// override the non-virtual BaseClass::funcD()
};
Om du vill ange att funktioner inte kan åsidosättas och att klasser inte kan ärvas använder du det sista nyckelordet.