especificador final
Você pode usar a palavra-chave final para designar funções virtuais que não podem ser substituídas em uma classe derivada. Também é possível usá-la para designar 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 é usada após uma declaração de função ou um nome de classe; caso contrário, não é uma palavra-chave reservada.
Quando final é usada em declarações de 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
{
};