final (especificador)
Puede utilizar la palabra clave de final para notificar las funciones virtuales que no se pueden reemplazar en una clase derivada.También puede utilizarla para informar de las clases que no se pueden heredar.
function-declaration final;
class class-name final base-classes
Comentarios
final es contextual y tiene un significado especial cuando ha utilizado después de una declaración de función o un nombre de clase; si no, no es una palabra clave reservada.
Cuando final se utiliza en declaraciones de clase, base-classes es una parte opcional de la declaración.
Ejemplo
El ejemplo siguiente se usa la palabra clave de final para especificar que una función virtual no puede invalidar.
class BaseClass
{
virtual void func() final;
};
class DerivedClass: public BaseClass
{
virtual void func(); // compiler error: attempting to
// override a final function
};
Para obtener información sobre cómo especificar las funciones miembro pueden reemplazar, vea override (especificador).
El ejemplo siguiente se usa la palabra clave de final para especificar que una clase no puede heredarse.
class BaseClass final
{
};
class DerivedClass: public BaseClass // compiler error: BaseClass is
// marked as non-inheritable
{
};