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_castdevolvenullptrpara 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
}