Avatar ·

Quando usar static_cast, dynamic_cast, const_cast e reinterpret_cast em C++?

Olá a todos! Comecei a estudar C++ e me deparei com diferentes operadores de conversão de tipos. Eu sei que em C existe a conversão simples entre parênteses, mas dizem que em C++ é necessário usar operadores especiais: `static_cast`, `dynamic_cast`, `const_cast` e `reinterpret_cast`. Estou completamente confuso sobre quando usar cada um. Por exemplo, tenho este código: ```cpp class Base { public: virtual void show() { std::cout << "Base\n"; } }; class Derived : public Base { public: void show() override { std::cout << "Derived\n"; } void extra() { std::cout << "Extra\n"; } }; int main() { Base* basePtr = new Derived(); // Como converter corretamente Base* para Derived*? Derived* d1 = (Derived*)basePtr; // C-style cast — funciona, mas está correto? int a = 10; d