Avatar ·

Quand utiliser reinterpret_cast en C++ et en quoi diffère-t-il des autres casts ?

Bonjour, collègues ! J'étudie le C++ et je maîtrise déjà assez bien static_cast et dynamic_cast. Mais reinterpret_cast me pose des questions et même de la peur. Je comprends que c'est un cast "malveillant" qui réinterprète simplement les bits, mais quand faut-il vraiment l'utiliser ? J'ai vu quelqu'un faire ceci dans du code : ```cpp int* p = new int(42); char* cp = reinterpret_cast(p); ``` Mais pourquoi ? On pourrait simplement prendre l'adresse et travailler avec. Ou encore cet exemple avec un cast de pointeur de fonction : ```cpp typedef void (*FuncPtr)(); FuncPtr f = reinterpret_cast(0x12345678); ``` Est-ce légal ? Il me semble que reinterpret_cast est une sorte de hack qui viole le système de types. Mais je sais qu'il est dans la norme, donc il a des utilisations légitimes. Dites-moi, s'il vous plaît, dans quelles situations réelles reinterpret_cast est-il un choix correct et sûr ? Quand son utilisation est-elle justifiée, et quand vaut-il mieux utiliser static_cast ou d'autres casts ? Et avec