Quand utiliser static_cast, dynamic_cast, const_cast et reinterpret_cast en C++ ?
Bonjour à tous ! J'ai commencé à apprendre le C++ et je suis tombé sur différents opérateurs de conversion de types. Je sais qu'en C il y a une simple conversion entre parenthèses, mais on dit qu'en C++ il faut utiliser des opérateurs spéciaux : `static_cast`, `dynamic_cast`, `const_cast` et `reinterpret_cast`. Je suis complètement perdu sur quand utiliser lequel.
Par exemple, j'ai ce code :
```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();
// Comment convertir correctement Base* en Derived* ?
Derived* d1 = (Derived*)basePtr; // C-style cast — ça marche, mais est-ce correct ?
int a = 10;
d