Identificatore final
È possibile utilizzare la parola chiave di final per definire le funzioni virtuali che non possono essere sottoposte a override in una classe derivata.È inoltre possibile utilizzarlo per definire classi che non possono essere ereditate.
function-declaration final;
class class-name final base-classes
Note
final è sensibile al contesto e ha un significato speciale solo quando utilizzava dopo una dichiarazione di funzione o di classe, in caso contrario, non è una parola chiave riservata.
Quando final utilizzato nelle dichiarazioni di classe, base-classes è una parte facoltativa di dichiarazione.
Esempio
Nell'esempio seguente viene utilizzata la parola chiave di final per specificare che una funzione virtuale non può essere sottoposta a override.
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 le funzioni membro è possibile eseguire l'override, vedere Identificatore override.
Nell'esempio seguente viene utilizzata la parola chiave di final per specificare che una classe non può essere ereditata.
class BaseClass final
{
};
class DerivedClass: public BaseClass // compiler error: BaseClass is
// marked as non-inheritable
{
};