especificador final
Você pode usar a palavra-chave final para designar as funções virtuais que não podem ser substituídas em uma classe derivada.Você também pode usá-lo para designar as classes que não podem ser herdadas.
function-declaration final;
class class-name final base-classes
Comentários
final é contextual e tem um significado especial somente quando usou após uma declaração ou um nome de classe de função; se não, não é uma palavra reservada.
Quando final é usado em declarações da classe, base-classes é uma parte opcional da declaração.
Exemplo
O exemplo a seguir usa a palavra-chave final para especificar que uma função virtual não pode ser substituída.
class BaseClass
{
virtual void func() final;
};
class DerivedClass: public BaseClass
{
virtual void func(); // compiler error: attempting to
// override a final function
};
Para obter informações sobre como especificar que as funções de membro podem ser substituídas, consulte substituir especificador.
O exemplo a seguir usa a palavra-chave final para especificar que uma classe não pode ser herdada.
class BaseClass final
{
};
class DerivedClass: public BaseClass // compiler error: BaseClass is
// marked as non-inheritable
{
};