C++ · Intermediário · Inglês · Técnico
dynamic cast
Conversão verificada em tempo de execução entre ponteiros ou referências de uma hierarquia polimórfica. Devolve nullptr para ponteiros inválidos e lança bad_cast para referências.
Onde usar
Usada para descobrir o tipo real de um objeto acessado pela base. Em review, muitos dynamic_cast indicam que falta uma função virtual para o comportamento.
Em código
Base* b = new Der;
if (auto* d = dynamic_cast<Der*>(b)) {
d->so_na_derivada();
} else {
// não era um Der
}Exemplos
Use dynamic cast and check for nullptr before using it.
Use dynamic cast e confira nullptr antes de usar.
Too many dynamic casts here, add a virtual method.
Dynamic casts demais aqui, adicione um método virtual.
Cuidado
Só funciona em classes com ao menos uma função virtual e tem custo de execução; não use no lugar de um design polimórfico.
Sinônimos
downcast seguro
Antônimos
static cast