Nós já sabemos que podemos sobrecarregar(overload) as funções e funções-membro em C++ assim como vimos no Curso de C++ Moderno Avançado.
Mas nesse cpp::daily de hoje vamos ver para que serve a palavra chave override
e também final
.
override
é utilizado para especificar que uma função virtual substitui outra função virtual.
Em uma declaração ou definição de função-membro, o especificador de substituição garante que a função é virtual e está substituindo uma função virtual de uma classe base. O programa está mal formado (um erro de tempo de compilação é gerado) se isso não for verdade.
override
é um identificador com um significado especial quando usado após declaradores de função de membro: caso contrário, não é uma palavra-chave reservada.
Supondo que você a seguinte struct ou classe com o seguinte conteúdo:
Isso compila normalmente mesmo se tornarmos a foo()
da Derivada
como override
, exemplo:
Mesmo se você ainda altere para const
:
Mas se você torná-la como const override
ou a bar()
como override
o compilador não deixará passar.
Mas se você tiver uma nova herdeira(neta) e a filha declarada como final
e tentar reutilizá-la, essa substituição não será possível:
Saída:
overriding final function
Tá, legal! Mas pra que serve isso ??? Só pra exibir erro ? Não, isso foi implementado no C++11 com intuito de tornar seu código limpo, porque você queria criar uma função que duplicasse conteúdo existente? Iria “sobrecarregar”, não é?! Então você pode descobrir se está ou não “reinventando a roda” simplesmente utilizando override
.
Não tão simples de entender, mas fácil de perceber, né?!
Por hoje é só, são pequenas doses diárias que farão sempre nos manter antenado com o C++ !
Então se inscreva nos nossos Cursos de C++ Moderno . Você aprender criar:
Acesse o endereço: