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
No answers yet.
Faça login para deixar uma resposta