override och final

Några småsaker har också rättats till. Kanske så små att man normalt inte har reflekterat över dem som problem. Man har löst det med att introducera identifierarna override och final som har speciell betydelse i vissa lägen men i övrigt är fria att använda för annat. Dvs de är inga reserverade ord.

override

Genom att lägga till override efter deklarationen av en virtuell medlemsfunktion så anges att denna måste överrida en metod med samma signatur. Så här:

class Derived : public Base {
public:
   virtual void func(int) override;
};

Vad är nu detta kan man fråga sig. Jo, det täpper till ett hål där man av misstag skapar en ny medlemsfunktion därför att det inte finns någon metod i basklassen med den signaturen.

final

Med final kan vidare arv förhindras. Det funkar både för klasser och för metoder. T.ex:

class CantInheritFromThis final {
};

class Base {
   virtual void cantOverride(int) final;
};
Publicerad i C/C++

Kategorier

WP to LinkedIn Auto Publish Powered By : XYZScripts.com