Sobes.tech
Junior — Middle

Em que casos é recomendado usar o operador dynamic_cast em C++?

sobes.tech IA

Resposta da IA

O operador dynamic_cast em C++ é utilizado para conversões seguras de ponteiros ou referências numa hierarquia de herança, quando é necessário verificar se o objeto realmente pertence ao tipo alvo ou à sua subclasse.

Recomenda-se usar dynamic_cast nos seguintes casos:

  • Ao fazer downcasting numa hierarquia de classes, quando se tem um ponteiro ou referência à classe base e se precisa aceder à classe derivada.
  • Quando é necessário verificar o tipo do objeto em tempo de execução (RTTI).
  • Para conversões seguras, pois em caso de falha, dynamic_cast devolve nullptr para ponteiros ou lança uma exceção para referências.

Exemplo:

class Base { virtual void foo() {} };
class Derived : public Base {};

Base* b = new Derived();
Derived* d = dynamic_cast<Derived*>(b);
if (d) {
    // Conversão bem-sucedida
} else {
    // Conversão falhou
}