Share via


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.

Sintaxe

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 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
{
};

Confira também

Palavras-chave
Especificador override