reinterpret_cast is used for low-level reinterpreting of bit patterns between inherently incompatible pointer types (e.g., int* to char*). static_cast is for related types, dynamic_cast for polymorphic downcasting, and const_cast for removing const/volatile.