Condividi tramite


Identificatore final

È possibile usare la parola chiave finale per designare le funzioni virtuali che non possono essere sottoposte a override in una classe derivata. È inoltre possibile utilizzare tale parola chiave per definire classi che non possono essere ereditate.

Sintassi

function-declaration final;
class class-name final base-classes

Osservazioni:

final è sensibile al contesto e ha un significato speciale solo quando viene usato dopo una dichiarazione di funzione o un nome di classe; in caso contrario, non è una parola chiave riservata.

Quando la versione finale viene usata nelle dichiarazioni di classe, base-classes è una parte facoltativa della dichiarazione.

Esempio

Nell'esempio seguente viene utilizzata la parola chiave finale per specificare che non è possibile eseguire l'override di una funzione virtuale.

class BaseClass
{
    virtual void func() final;
};

class DerivedClass: public BaseClass
{
    virtual void func(); // compiler error: attempting to
                         // override a final function
};

Per informazioni su come specificare che è possibile eseguire l'override delle funzioni membro, vedere Override Specifier.

Nell'esempio seguente viene utilizzata la parola chiave finale per specificare che una classe non può essere ereditata.

class BaseClass final
{
};

class DerivedClass: public BaseClass // compiler error: BaseClass is
                                     // marked as non-inheritable
{
};

Vedi anche

Parole chiave
Identificatore override