Qual é o motivo da propagação implícita de virtualidade?

Eu só trabalho com C ++ há 2 a 3 meses e, recentemente, descobri o identificador,final, que vem após uma função virtual. Até hoje, eu acreditava que a omissão devirtual vai parar a propagação da virtualidade, mas eu estava errado. Propaga-se implicitamente.

Minha pergunta é essa. Por que permitir propagação implícita? Por que não existe uma existência devirtual tornar uma função virtual e ausência devirtual tornar uma função não virtual? É melhor em alguma circunstância? ou foi, no dia em quevirtual foi introduzido pela primeira vez?

De acordo comResposta de Clifford, existe até um compilador que gera aviso com a ausência devirtual.

por que a virtualidade dos métodos é propagada implicitamente em c

Eu esperava que o link acima respondesse à minha pergunta, mas isso não acontece.

------------ Adição -------------

Há comentários sobre como perguntar a utilidade desse recurso. eu acho quefinal A palavra-chave na função virtual é o que desvirtualiza a função. A função não pode mais ser substituída; portanto, uma classe derivada deve declarar novamente uma função com ou sem o mesmo nome. E sefinal é diferente da desirtualização, ajude-me a entender. E sefinal não é diferente, então a utilidade da desvirtualização é evidente pelo fatofinal foi introduzido. Eu concordo que forçar explícitovirtual irá produzir bugs, mas estou curioso para saber se existem outros motivos.

questionAnswers(1)

yourAnswerToTheQuestion